2010-04-20 8 views
24

ho eseguito test sul mio sito web utilizzando Google Page Speed ​​e raccomanda che "la cache del browser Leverage" e ha fornito la seguente risorsa:Set Caching HTTP scadenza, consigliato da Google Page Speed ​​

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

Questa risorsa non spiega come modificare effettivamente la data di scadenza delle mie intestazioni http. Lo faccio attraverso .htaccess? Vorrei impostare il caching il più a lungo possibile (senza violare la politica di Google di un massimo di un anno).

Qualsiasi consiglio sulle impostazioni consigliate (per una community di social network personalizzata basata su php) sarebbe molto apprezzato.

risposta

28

In .htaccess del tuo root:

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

e seguire da:

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

Questo è lo stesso codice esatto che uso su ogni proprietà che gestisco e mi offre (e PageSpeed) i risultati più soddisfacenti. Si può discutere su regole specifiche, per questo ho detto che soddisfa me, ma sicuramente soddisfa PageSpeed.

+2

Dipende da cosa intendi per "molte condizioni". Le condizioni devono essere elaborate dal server Web su ogni richiesta HTTP, quindi se si pensa a più di 65.000 condizioni, allora non è certamente una buona idea – methode

+8

Solo un suggerimento. Puoi semplicemente scrivere "accesso più 1 anno" o anche direttive più complesse come "accesso più 1 mese 15 giorni 2 ore" che è molto più facile da leggere e gestire rispetto a secondi. – GeneQ

+0

@GeneQ, +1 per quel suggerimento. Sono abituato a unire timestamp, probabilmente è per questo che uso secondi nelle regole. – methode

1

Può essere eseguito sia con htaccess che con php. Normalmente non si vorrebbe forzare il caching dell'html effettivo dal suo contenuto dinamico basato su database (può essere fatto con la funzione header() php se necessario). Quello che si desidera memorizzare nella cache è css esterno & javascript e file immagine.

Vedi qui per una soluzione .htaccess: http://www.askapache.com/htaccess/apache-speed-expires.html