2010-03-09 5 views
3

내 웹 사이트에서 사용자에게 작은 그림이 많은 페이지를 제공하고 싶습니다. Windows의 축소판과 비슷합니다.
모든 사진은 크기가 1KB 이상 300KB 이하이지만 일반적으로 5KB 이하입니다.웹 사이트에서 많은 작은 이미지를 효율적으로 저장하고 제공하는 방법은 무엇입니까?

현재 모든 이미지는 웹 서버의 폴더에 있습니다 (linux + apache).하지만 이것이 최상의 솔루션이라고 생각하지 않습니다. 특히 하나 이상의 웹 서버로 확장해야하는 경우 내가 수천을 가질 때.

그래서 데이터베이스에 이러한 파일을 배치해야합니까? 아니면 별도의 파일 서버가 있습니까? 다른 제안?

답변

4

몇 가지를 고려 :

  • 당신이 그것을 유지하지 않는 한 데이터베이스에 이미지를 두지 마십시오 기억. 일반 파일은 종종 바이너리 데이터를위한 완벽한 솔루션이며, 각 파일에 대해 별도의 HTTP 요청을 발행합니다.
  • 이미지를 여러 서버에서 미러링하고 둘 사이의 균형을 조정할 수 있다면 좋습니다.
  • 여분의 서버가없는 경우 가상 하위 도메인으로 위장하여 동시 연결 제한을 피하십시오. this article을 참조하십시오. 이것과 관련이 있습니다 : 각 페이지에서 두 개 이상의 하위 도메인에 이미지를 분산시킵니다.
  • 트래픽을 압축하지 마십시오. CPU 시간 만 낭비 할 것입니다.
  • 정적 이미지에 적절한 캐싱 (예 : 만료까지)을 사용하고 있는지 확인하십시오. 이미지가 업데이트되면 언제든지 주소를 변경할 수 있습니다.
  • 쿠키없는 (하위) 도메인의 모든 정적 콘텐츠를 제공해야합니다.
+0

좋은 점! 구름 사용에 대한 의견이 있으십니까? –

+0

클라우드에서 대용량 웹 서버를 운영하는 실습 경험이 없었기 때문에 (배치 작업 만) 신뢰할 수있는 정보를 제공 할 수는 없습니다. –

1

가능한 한 적은 CPU 시간/그림을 넣고 싶습니다. 그 그림을 (정적 컨텐츠로) 제공하기 위해 프록시를 사용하도록 제안합니다. 나는 nginx으로 좋은 경험을 가지고 있으며, 믿을 수있는 속도가 빠릅니다. 당신은 포트 8081에 서버를 가지고 직접 폴더/정적/사진에서 사진을 제공 어디

귀하의 설정이

worker_processes 1; 
events { 
    worker_connections 1024; 
} 

http { 
    include  mime.types; 
    default_type application/octet-stream; 

    sendfile  on; 

    keepalive_timeout 300; 

    server { 
     listen  8080; 
     server_name localhost; 

     location /static/ {root static/pictures/;} 

     location/{ proxy_pass http://127.0.0.1:8081; } 
    } 
} 

같은 것을 볼 수 있었다. (모든 URL은 '/'정적 '이 폴더에서 제공 될 예정으로 시작합니다.)

관련 문제