2009-08-30 5 views
1

사용자 프로필에 표시되는 많은 작은 이미지가 많으며이 페이지의로드가 끔찍합니다. 가장 좋은 해결책은 모든 것을 스프라이트하는 것이지만 슬프게도 나는 너무 많은 이미지를 가지고 있으며 프로파일 당 단지 수백 개가 사용됩니다.HTTP : 드물게 변경된 이미지에 가장 적합한 헤더는 무엇입니까?

그래서 저는 차선책을 얻으려고합니다. 어떤 헤더를 보내야합니까? ETag? 만료? 캐시 제어? 지금은이 :

http://metaward.com/media/award/ofwjh3.png

Last-Modified Sat, 11 Jul 2009 22:37:49 GMT 
Cache-Control max-age=2592000 
Expires Tue, 29 Sep 2009 22:41:21 GMT 

그리고 이미지의 많은 (경우에도 캐시, 그들이로드 방법 느린 쇼)와 예를 들어 페이지 :

http://metaward.com/6

때때로 사용자 또한 프로필 사진을 변경하지만 캐싱에 대해 걱정할 필요가 없도록 그 중 하나만 있습니다.

답변

2

이 경우 캐시 히트를 최대화하려면 "먼 미래 만료"를 사용해야합니다. 즉, 이미지를 변경하면 새 이름을 지정해야하지만 이미지가 너무 많아서 이미지를 자주 변경한다고 상상할 수는 없습니다.

페이지에는 실제로 100 장의 이미지가 있습니다. 스프라이트를 사용해야합니다. 아마도 도움이되는지 알아보기 위해 시작할 수있는 몇 가지 일반적인 것들이 있습니다 (권장 사항). 아니면 "변화 가능성이 가장 적은"사람들의 스프라이트를 할 수 있습니다.

+0

스프라이트를 사용하면 이미지 맵으로 변환 할 수 있습니다. 그렇게하면 다운로드 할 수있는 하나의 큰 이미지 만 있으므로 서버로 전송되는 HTTP 요청 수를 최소화하고 다운로드 속도를 높일 수 있습니다. 그것은 당신이 보낸 링크에 대해 잘 작동하지만 항상 적절하지 않을 수 있습니다. – Matt

+0

다음은 미래의 만료 헤더 링크입니다. http://www.askapache.com/htaccess/apache-speed-expires.html – ndp

+0

@Matt Yes. 모든 이미지를 하나의 파일에 넣은 다음 "타일링"하십시오. 100x100 타일이 있다고 가정 해 보겠습니다. 배경 이미지를 만들면 1 행의 CSS, 2 열의 "background-position : -100, 0; width : 100, height : 100; overflow : hidden"과 같은 모양이됩니다. – ndp

0

방문자가 프로필에서 프로필로 이동할 때 캐싱이 약간 도움이 될 수 있으며 지속적인 연결로 다른 하위 도메인의 이미지를 제공하면 전달 속도가 빨라지지만 실제 성능 저하 요인은 단순히 HTTP 요청의 수입니다. 시간의 50 % 이상 함께 나타나는 두 개 이상의 이미지를 식별 할 수 있다면 정기적으로 예약 된 오프라인 프로세스에서 이미지를 스프라이트로 결합하는 것이 좋습니다. 리소스가 허용되면, 이미지 조작 라이브러리를 사용할 수도 있습니다. php-gd를 사용하면 런타임에 이미지 블록을 결합하여 제공 할 수 있습니다.

관련 문제