6

Utilizzo Rails 3.1 w/asset pipeline, phusion 3.0.xe apache 2.2.17.Rails 3 Asset Pipeline + Apache + Phusion Passenger

Nella documentazione di configurazione a http://guides.rubyonrails.org/asset_pipeline.html, nella sezione 4.1.1 si afferma che ho bisogno di aggiungere una sezione alla mia configurazione di Apache:

<LocationMatch "^/assets/.*$"> 
    # Some browsers still send conditional-GET requests if there's a 
    # Last-Modified header or an ETag header even if they haven't 
    # reached the expiry date sent in the Expires header. 
    Header unset Last-Modified 
    Header unset ETag 
    FileETag None 
    # RFC says only cache for 1 year 
    ExpiresActive On 
    ExpiresDefault "access plus 1 year" 
</LocationMatch> 

ho presupposto che Phusion passeggeri è appena stato "trattamento" questo ... o sono stato negligente in non RTFM? Se voglio sfruttare il fingerprint, devo aggiungere questo alla configurazione di apache?

+2

Si noti che la versione corrente dei documenti non ha più la sezione "Header unset Last-Modified". Consulta http://stackoverflow.com/questions/ 8344186/rails-3-1-on-apache-pagespeed-dice-specifica-cache-validator-when-using-asset-p per una spiegazione del motivo per cui è stato rimosso – gravitystorm

risposta

9

Se si desidera ottenere tutti i vantaggi della pipeline di asset, è necessario aggiungerlo alle configurazioni di Apache. Senza questa sezione, la configurazione di Apache probabilmente indica ai browser lo non per memorizzare le risorse, causando un inutile numero di round trip tra il browser e il server.

Per far funzionare tutto questo, potrebbe essere necessario abilitare alcuni altri moduli Apache. Per fare questo:

sudo a2enmod 
# Choose headers 
sudo a2enmod 
# Choose expires 
sudo service apache2 restart 

per eseguire il debug il set-up, mi consiglia di utilizzare il plugin live intestazioni Firefox. Usando questo, in particolare, richiedi un URL di risorsa (ad esempio, http://mysite.com/assets/application-8a0ae0b2d708f797674b7123c37501ba.css)and guarda le intestazioni della cache prima e dopo aver apportato questa modifica.Vedi un URL di risorsa di esempio facendo una fonte di visualizzazione su qualsiasi pagina

Dopo la modifica, dovresti vedere che la scadenza della cache è impostata su un anno nel futuro

+0

Ottima risposta - soprattutto con i moduli intestazioni e scadenza, come ho davvero bisogno di abilitare quelli. Controllato le intestazioni prima e dopo e verificato il cambiamento. Grazie! – coreyt

+1

FYI, puoi semplicemente chiamare a2enmod con il modulo dopo di esso. Ad esempio, "sudo a2enmod scade". – nirvdrum

+0

Mi chiedo ancora perché ho bisogno di farlo. L'ho provato e funziona benissimo, si. Ma la mia configurazione predefinita di Apache2 restituisce Non modificato 301 per i file senza alcuna configurazione speciale (ad esempio, la pagina di benvenuto di Red Hat). Ma una volta che questo è gestito tramite mod_passenger, non funziona. Immagino che mod_passenger non lo faccia per impostazione predefinita. – lzap

Problemi correlati