2010-04-20 8 views
24

Ich lief Tests auf meiner Website mit Googles Page Speed ​​und es empfiehlt, dass ich "Leverage Browser-Caching" und die folgende Ressource zur Verfügung gestellt:Set HTTP-Caching Expiration, empfohlen von Google Pagespeed

http://code.google.com/speed/page-speed/docs/caching.html#LeverageBrowserCaching

Diese Ressource nie erklärt Wie ändere ich tatsächlich das Ablaufdatum meiner HTTP-Header? Tue ich dies durch .htaccess? Ich möchte das Caching so lange wie möglich festlegen (ohne die Google-Richtlinie für ein Jahr zu verletzen).

Jeder Rat zu empfohlenen Einstellungen (für eine benutzerdefinierte PHP-gesteuerte Social-Networking-Community) würde sehr geschätzt werden.

Antwort

28

in Ihrem Stamm .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> 

Und folgen nach:

<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> 

Dieses genau die gleiche Code ist ich verwenden Jede Eigenschaft, die ich verwalte und bietet mir (und PageSpeed) die befriedigendsten Ergebnisse. Man kann über bestimmte Regeln streiten, deshalb habe ich gesagt, dass es me erfüllt, aber es erfüllt sicherlich PageSpeed.

+2

Es hängt davon ab, was Sie unter "viele Bedingungen" verstehen. Die Bedingungen müssen vom Webserver bei jeder HTTP-Anfrage verarbeitet werden. Wenn Sie also an mehr als 65.000 Bedingungen denken, dann ist das keine gute Idee. – methode

+8

Nur ein Tipp. Sie können einfach "Zugriff plus 1 Jahr" oder sogar komplexere Anweisungen wie "Zugriff plus 1 Monat 15 Tage 2 Stunden" schreiben, was viel einfacher zu lesen und zu warten ist als Sekunden. – GeneQ

+0

@GeneQ, +1 für diesen Tipp. Ich bin es gewohnt, Timestamps zu vereinheitlichen, wahrscheinlich verwende ich deshalb Sekunden in den Regeln. – methode

1

Es kann mit htaccess und php getan werden. In der Regel möchten Sie nicht zwingen, den tatsächlichen HTML-Code zwischenzuspeichern, da sein dynamischer datenbankgestützter Inhalt (kann mit der PHP-Funktion header() bei Bedarf getan werden). Was Sie zwischenspeichern möchten, ist externe CSS & Javascript und Bilddateien.

Sehen Sie hier für eine .htaccess Lösung: http://www.askapache.com/htaccess/apache-speed-expires.html

Verwandte Themen