2011-12-15 2 views
8

웹 컨텐트 캐싱을 시작하기 위해 ".htacces"파일에 다음을 입력했습니다. Google Page Speed와 Yslow에 따르면 페이지는 여전히 캐시되지 않습니다. 모듈이 잘못 되었습니까? 아니면 앱이 데이터를 올바르게 표시하지 않습니까?htaccess 캐싱이 작동하지 않음

사이트 서버에 아파치 2.0에

htaccess로 (캐싱 모듈 부분)를 실행 :

# Expire headers 
<ifModule mod_expires.c> 
  ExpiresActive On 
  ExpiresDefault "access plus 1 seconds" 
  ExpiresByType image/x-icon "access plus 2592000 seconds" 
  ExpiresByType image/jpeg "access plus 2592000 seconds" 
  ExpiresByType image/png "access plus 2592000 seconds" 
  ExpiresByType image/gif "access plus 2592000 seconds" 
  ExpiresByType application/x-shockwave-flash "access plus 2592000 seconds" 
  ExpiresByType text/css "access plus 604800 seconds" 
  ExpiresByType text/javascript "access plus 216000 seconds" 
  ExpiresByType application/javascript "access plus 216000 seconds" 
  ExpiresByType application/x-javascript "access plus 216000 seconds" 
  ExpiresByType text/html "access plus 600 seconds" 
  ExpiresByType application/xhtml+xml "access plus 600 seconds" 
</ifModule> 
  
# Cache-Control Headers 
<ifModule mod_headers.c> 
#month 
  <filesMatch "\.(ico|jpe?g|png|gif|swf)$"> 
    Header set Cache-Control "max-age=2592000, public" 
  </filesMatch> 
#week 
  <filesMatch "\.(css|js)$"> 
    Header set Cache-Control "max-age=604800, public" 
  </filesMatch> 
#day 
  <filesMatch "\.(x?html?|php)$"> 
    Header set Cache-Control "max-age=43200, private, must-revalidate" 
  </filesMatch> 
</ifModule> 
# END Cache-Control Headers 
  
# Turn ETags Off 
<ifModule mod_headers.c> 
  Header unset ETag 
</ifModule> 
FileETag None 
  
# Remove Last-Modified Header 
<ifModule mod_headers.c> 
  Header unset Last-Modified 
</ifModule> 
+0

전송 된 만료 헤더를 확인하십시오. Chrome 개발자 도구 또는 방화범 입력의 넷 탭을 사용합니다. htaccess가 비활성화되어 있거나 mod_expires가 활성화되어 있지 않을 수 있습니다. – Gerben

답변

19

httpd.conf로 이동하고 mod_expires 라인을 찾아을, 그것은 주석되어서는 안된다. mod_headers 행을 찾아 주석 처리하지 않았는지 확인하십시오.

또는 (안 중요한 앱) 쉽고 더러운 시험이 : <ifModule mod_headers.c>를 들어, 같은가는 사이에 <ifModule mod_expires.c></ifModule> 휴가 물건을 제거하고 서버가 500 인터넷 서버 오류로 실패 할 경우 당신은 아마 하나 또는 둘 모두 누락 이러한 모듈은 활성화되어 있지 않습니다. 그렇다면 httpd.conf로 가서 필요한 것을 활성화하십시오.

REDbot 같은 도구를 사용하여 사이트의 응답 헤더를 테스트 할 수도 있습니다. 이미지를 가리키는 것과 같은 리소스 URL을 선택하고 도구에 붙여 넣어 어떤 헤더가 몇 가지 권장 사항과 함께 반송되는지 확인하십시오. 도메인의 robots.txt 규칙을 따르며 허용되지 않는 경우 리소스를 확인하지 않습니다.

Gerben과 마찬가지로 firefox의 net 탭을 사용하거나 Chrome 개발자 도구 또는 일부 동등한 웹 개발자 도구를 사용하면 어떤 헤더를주고받을 수 있는지 알 수 있습니다.

Cache-Control public도 설정할 필요가 없습니다. 또한 ExpiresByType 전화를 사용하는 경우 max age을 사용할 필요가 없습니다. 더 많은 정보를 들어

이 위대한 튜토리얼 읽어 http://www.mnot.net/cache_docs/

을 그리고 예를 배우게 : 체크 아웃이 lighthttpd, Node.js, Nginx 등과 같은 다른 인기있는 서버 설정 예를 들어 https://github.com/h5bp/html5-boilerplate/blob/master/dist/.htaccess

에서 html5-boilerplate에서 수행하는 방법 참조 : https://github.com/h5bp/server-configs

+0

@Anthony가이 게시물의 맨 아래에 링크되어있는 html5 상용구 예제는 매우 유용했습니다. 예를 들어'jpg' 대신에'jpg'라고 쓰고 있습니다. 고마워! –

관련 문제