2010-04-20 2 views
24

내가 구글의 페이지 속도 사용하여 내 웹 사이트에서 테스트를 실행하고 I "를 활용하여 브라우저 캐싱"을 다음과 같은 리소스를 제공하는 것이 좋습니다 페이지 속도 실제로 내 http 헤더의 만료 날짜를 변경하는 방법. .htaccess를 통해이 작업을 수행합니까? 가능한 한 길게 캐싱을 설정하고 싶습니다 (Google의 1 년 정책을 위반하지 않고).설정 HTTP 캐싱 만료,

(맞춤형 PHP 기반 소셜 네트워킹 커뮤니티의) 권장 설정에 대한 조언은 크게 감사하겠습니다.

답변

28

루트의 .htaccess에서 :

은 htaccess로 솔루션 여기를 참조하십시오

<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/x-javascript "access plus 216000 seconds" 
    ExpiresByType text/html "access plus 600 seconds" 
    ExpiresByType application/xhtml+xml "access plus 600 seconds" 
</IfModule> 

에 의해 수행합니다

<IfModule mod_headers.c> 
<FilesMatch "\\.(ico|jpe?g|png|gif|swf)$"> 
Header set Cache-Control "max-age=2692000, public" 
</FilesMatch> 
<FilesMatch "\\.(css)$"> 
Header set Cache-Control "max-age=2692000, public" 
</FilesMatch> 
<FilesMatch "\\.(js)$"> 
Header set Cache-Control "max-age=216000, private" 
</FilesMatch> 
<FilesMatch "\\.(x?html?|php)$"> 
Header set Cache-Control "max-age=600, private, must-revalidate" 
</FilesMatch> 
Header unset ETag 
Header unset Last-Modified 
</IfModule> 

이것은 내가에 사용하는 동일한 코드 내가 관리하는 모든 속성은 가장 만족스러운 결과를 제공합니다 (PageSpeed). 특정 규칙에 대해 논할 수 있습니다. 그 이유는 을 만족하지만 확실히 PageSpeed를 만족시킵니다.

+2

"많은 조건"이 무엇을 의미하는지에 따라 다릅니다. HTTP 요청마다 웹 서버에서 조건을 처리해야하므로 65,000 개 이상의 조건을 생각하면 그다지 좋은 아이디어는 아닙니다. – methode

+8

팁이 있습니다. "액세스 플러스 1 년"또는 "액세스 플러스 1 개월 15 일 2 시간"과 같은 더욱 복잡한 지시문을 작성하여 초보다 읽고 유지하는 것이 훨씬 쉬울 수 있습니다. – GeneQ

+0

@GeneQ, 그 팁에 +1. 나는 타임 스탬프를 유닉스에 익숙하게 사용했기 때문에 규칙에서 초를 사용하는 이유 일 것이다. – methode

1

htaccess와 php로 모두 수행 할 수 있습니다. 일반적으로 동적 데이터베이스 구동 컨텐츠 (실제로는 header() php 함수를 사용하여 수행 할 수 있기 때문에)를 실제 html에 캐싱하지 않으려 고합니다. 캐시하려는 것은 외부 CSS & 자바 스크립트 및 이미지 파일입니다. http://www.askapache.com/htaccess/apache-speed-expires.html