2010-06-14 2 views
1

우리 웹 사이트가 mod_rewrite 및 PHP 스크립트에 의해 생성되도록 변환되었습니다. 이미지는 브라우저에 있어야 캐싱되지 않습니다.정적 이미지가 PHP 생성 페이지로 캐싱되지 않습니다

모든 이미지는 형식에 따라 : PHP 파서는 각 요청에 동적으로 각 페이지를 처리해야하기 때문에 스크립트 완전히 캐싱을 피해야한다

<img src="/images/header.png" /> 

을; 그러나 큰 이미지의 다운로드 오버 헤드는 모든 단일 페이지로드시 까다 롭습니다.

"Cache-Control : no-cache, must-revalidate"및 "Expires : some_date_in_the_past"에 대한 헤더를 제공하여 PHP 스크립트의 유효성을 다시 확인하는 것이 이상적입니다.

브라우저가 모든 페이지에서 일관된 href 값을 가진 정적 이미지를 캐싱하지 않는 이유는 무엇입니까?

+0

캐시하지 말고 매번 재 검증해야하기 때문에? 이것은 아마도 내가 읽은 것 중 가장 혼란스러운 일일 것입니다. – animuson

답변

2

.htacess 파일에서 특정 헤더를 적용 할 파일 확장자를 알려줄 수 있습니다. 정적 컨텐츠의 경우 헤더가 만료 될 수 있고 동적 컨텐츠의 경우 캐시 제어를 쓸 수 있습니다. 캐시의 유효성을 다시 확인해야합니다. .

<IfModule mod_deflate.c> 
<FilesMatch "\.(js|css|htm|php)$"> 
SetOutputFilter DEFLATE 
</FilesMatch> 
</IfModule> 

<IfModule mod_expires.c> 
    <FilesMatch "\.(gif|jpg|jpeg|png|swf|css|js|html?|xml|txt)$"> 
     ExpiresActive On 
     ExpiresDefault "access plus 10 years" 
     ExpiresByType image/x-icon A604800 
     Header set Cache-Control "max-age=290304000, public" 
    </FilesMatch> 
</IfModule> 

이 예제에서와 같이 나는 다른 미래의 모든 정적 파일 일치에 만료 헤더를 추가했습니다.

FileMatch 태그와 파일 확장자에 유의하십시오. .htacess 파일은 응용 프로그램 내의 모든 폴더에 보관되며 해당 폴더에 이러한 설정을 제공합니다.

+0

새로운 .htaccess 파일로 헤더가 제대로 전송되는 것처럼 보이지만 브라우저가 각 페이지로드시 이미지를 계속 요청하고있는 것처럼 보입니다. http://getsoundaround.com/images/icons/icon_email.png GET /images/icons/icon_email.png HTTP/1.1 HTTP/1.1 200 OK 날짜 : 2010년 6월 14일 (월) 21시 4분 : 그리니치 표준시 01시 04분 서버 : 아파치/2.2.12 (우분투) 마지막 수정 : 16 년 12 월 2008 년 그리니치 표준시 11시 52분 18초 Etag입니다, 화 : "3602e-1f8-45e28975d0080" 수락 - 범위 : 콘텐츠 길이 바이트 : 504 캐시 제어 : 최대 연령 = 290304000, 공개 만료 : 2020 년 6 월 11 일 21:04:14 GMT 연결 : 닫음 콘텐츠 형식 : 이미지/png – scootklein

관련 문제