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.
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
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
@GeneQ, +1 per quel suggerimento. Sono abituato a unire timestamp, probabilmente è per questo che uso secondi nelle regole. – methode