Come posso impostare le intestazioni di scadenza per CSS, JS e Immagini?


38

Di recente ho analizzato il mio sito Web con l'addon di pagepeed su firebug. Mi ha suggerito di impostare la scadenza su file CSS, JS e di immagine.

Mi chiedo come posso farlo?

Risposte:


37

Aggiorna la tua configurazione di Apache per includere le seguenti direttive come parte della tua configurazione principale :

# 
# associate .js with "text/javascript" type (if not present in mime.conf)
# 
AddType text/javascript .js

# 
# configure mod_expires
# 
# URL: http://httpd.apache.org/docs/2.2/mod/mod_expires.html
# 
<IfModule mod_expires.c>
    ExpiresActive On
    ExpiresDefault "access plus 1 seconds"
    ExpiresByType image/x-icon "access plus 2692000 seconds"
    ExpiresByType image/jpeg "access plus 2692000 seconds"
    ExpiresByType image/png "access plus 2692000 seconds"
    ExpiresByType image/gif "access plus 2692000 seconds"
    ExpiresByType application/x-shockwave-flash "access plus 2692000 seconds"
    ExpiresByType text/css "access plus 2692000 seconds"
    ExpiresByType text/javascript "access plus 2692000 seconds"
    ExpiresByType application/x-javascript "access plus 2692000 seconds"
    ExpiresByType text/html "access plus 600 seconds"
    ExpiresByType application/xhtml+xml "access plus 600 seconds"
</IfModule>

# 
# configure mod_headers
# 
# URL: http://httpd.apache.org/docs/2.2/mod/mod_headers.html
# 
<IfModule mod_headers.c>
    <FilesMatch "\\.(ico|jpe?g|png|gif|swf|css|js)$">
        Header set Cache-Control "max-age=2692000, public"
    </FilesMatch>
    <FilesMatch "\\.(x?html?|php)$">
        Header set Cache-Control "max-age=600, private, must-revalidate"
    </FilesMatch>
    Header unset ETag
    Header unset Last-Modified
</IfModule>

Ottengo un errore del server interno 500 quando lo inserisco nel mio file .htaccess
KoolKabin

La tua configurazione di Apache potrebbe non supportare tutte le opzioni sopra elencate. Aggiornerò questa risposta a breve per aiutare a risolvere questo problema.
John Conde

My Drupal contiene riferimenti javascript / css come: www.example.com/misc/jquery.js?v=1.4.4 o www.example.com/sites/all/modules/nice_menus/css/nice_menus.css?mtu293, it non sembra funzionare per tali file. È aggiornato da oggi?
AgA,

2
@JohnConde Perché entrambi scade e le intestazioni? Inoltre, quando si aggiorna un'immagine o un CSS, ad esempio, è necessario rinominare il file? O per un file css funziona il versioning: test.css? 123?
Reseagainst

14

Puoi metterlo nel tuo htaccess:

<FilesMatch "(?i)^.*\.(ico|flv|jpg|jpeg|png|gif|js|css)$">
ExpiresActive On
ExpiresDefault A2592000
</FilesMatch>

Indirizzerà i file con quelle estensioni (ico, flv, jpg e così via) e imposterà l'intestazione Expires come tempo di accesso (A) più 30 giorni (2592000 secondi). Puoi anche aggiungere questo a livello di server se hai accesso a quello.


2

Dipende dall'host e dal modo in cui server queste cose. Opzione 1) se controlli il server crea l'apache per aggiungere le intestazioni di scadenza nella risposta Opzione 2) se non controlli il web server, o server le immagini / js / css / etc puoi impostare queste intestazioni dallo script che server loro

Tieni presente che questi suggerimenti sono raccomandabili ma non assoluti. Sono più per risparmiare una larghezza di banda che per accelerare il tuo sito web. Quindi se hai un traffico basso al tuo sito non preoccuparti troppo di questo.


Sono con l'opzione 2. Come posso impostare queste intestazioni dallo script. Script significa php o quale?
KoolKabin l'

Puoi controllare stackoverflow.com/questions/2185449/… questo è un esempio di Python ma se hai familiarità con la programmazione penso che otterrai l'idea. In php dovrai usare le intestazioni (). Ma tieni presente che in questo caso tutti i file "statici" dovranno essere serviti attraverso lo script che aumenterà la tua quota CPU. Ora mi viene in mente che esiste una terza opzione. Usa CDN per questi file.
Ilian Iliev l'

2

L'impostazione scade in Lightspeed Web Server

Accedi all'Admin Console quindi> Server-> Generale-> Scade le impostazioni-> Scade per tipo

Aggiungi quanto segue:

text/css=A604800, text/javascript=A604800, application/javascript=A604800, application/x-javascript=A604800, application/x-shockwave-flash=A604800, image/gif=A604800, image/jpg=A604800, image/jpeg=A604800, image/png=A604800, image/ico=A604800, image/icon=A604800

604800 sono i secondi della scadenza, che dovrebbero essere adatti alle tue esigenze poiché le sue 168 ore sono 7 giorni. Inoltre Light Speed ​​Server utilizza un htaccess che è necessario aggiungere la seguente riga:

ExpiresActive On

In alternativa, se non si dispone dell'accesso alla console di amministrazione, provare il seguente file .htaccess:

  ExpiresByType image/png A604800
  ExpiresByType image/gif A604800
  ExpiresByType image/jpg A604800
  ExpiresByType image/jpeg A604800
  ExpiresByType text/javascript A604800
  ExpiresByType application/x-javascript A604800
  ExpiresByType text/css A604800
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.