2011-09-25 4 views
2

.htaccess에서 이것이 가능한지 궁금한가요?.htaccess 캐시 정적 콘텐츠 (수정하지 않은 경우)?

현재 PHP를 통해 .js, .css 및 모든 이미지 파일을 캐싱하고 있으며 filemtime()을 확인하여 파일이 수정되지 않은 경우에만 캐싱을 제공합니다.

누군가는 그것이 .htaccess를 통해 가능하다는 것을 제안했고 훨씬 더 빨랐으며 누군가가 약간의 빛을 비추 길 희망 했었습니다 ... 나는 둘러 보았고 다양한 스 니펫을 발견했지만 내가 무엇을하고 있는지를 발견하지 못했습니다.

답변

5

mod_expires을 아파치 서버에 설치 한 경우 .htaccess 파일에 다음과 같이 입력 할 수 있습니다. 이 예제는 PHP 지향적이지만 (실제로는 Drupal 7 .htaccess 파일에서 가져온 것임) 좋은 출발점이되어야합니다.

FileETag MTime Size 
<IfModule mod_expires.c> 
    # Enable expirations. 
    ExpiresActive On 

    # Cache all files for 2 weeks after access (A). 
    ExpiresDefault A1209600 

    <FilesMatch \.php$> 
    # Do not allow PHP scripts to be cached unless they explicitly send cache 
    # headers themselves. Otherwise all scripts would have to overwrite the 
    # headers set by mod_expires if they want another caching behavior. 
    ExpiresActive Off 
    </FilesMatch> 
</IfModule> 
+0

캐시 내용이 수정 된 경우에도 캐시가 지워지거나 자동으로 업데이트 될 때까지 캐시 된 콘텐츠를 검색 할 수 있습니까? – user962026

+0

사과 나는 그 비트를 완전히 읽지는 않았지만, 위에 FileETag 식별자를 포함하도록 위의 코드를 업데이트했습니다. 내용이 변경되지 않은 경우 서버가 전체 응답을 보내지 않도록 알려줍니다. 여기에 더 자세한 설명이 있습니다 (http://stuntsnippets.com/etags-htaccess/).하지만 컨텐트가 변경되면 새로운 컨텐트가 반환 될 것이라는 아이디어가 있습니다. – Clive

+0

스 니펫을 사용하면 굉장합니다. 정적이 아닌 모든 비 .php 파일을 2 주 동안 캐시하고 파일이 수정 된 경우 수정 된 버전이 자동으로 반환됩니다. – user962026

관련 문제