6

Estoy usando Rails 3.1 con canalización de activos, phusion 3.0.x y apache 2.2.17.Raíles 3 Activo Pipeline + Apache + Phusion Passenger

En la documentación de configuración en http://guides.rubyonrails.org/asset_pipeline.html, en la sección 4.1.1 se establece que necesito agregar una sección a mi configuración de 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> 

he estado asumiendo que Phusion pasajeros se acaba de "manipulación" esto ... o he sido negligente en no RTFM? Si quiero aprovechar la toma de huellas dactilares, ¿debo agregar esto a la configuración de apache?

+2

Tenga en cuenta que la versión actual de los documentos ya no tiene la sección "Sin abrir el encabezado Última modificación" más. Consulte http://stackoverflow.com/questions/ 8344186/rails-3-1-on-apache-pagespeed-says-specify-cache-validator-when-using-asset-p para obtener una explicación de por qué se eliminó. – gravitystorm

Respuesta

9

Si quiere todos los beneficios de la cartera de activos, de hecho, necesita agregar esto a sus configuraciones de Apache. Sin esa sección, es probable que su configuración de Apache indique específicamente a los navegadores no que almacenen los activos en la memoria caché, lo que da como resultado un número innecesario de viajes redondos entre el navegador y su servidor.

Para que esto funcione, es posible que deba habilitar algunos módulos de Apache más. Para hacer esto:

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

Para depurar su configuración, le recomiendo usar el complemento Live Headers Firefox. Utilizando eso, solicite específicamente una URL de activo (por ejemplo, http://mysite.com/assets/application-8a0ae0b2d708f797674b7123c37501ba.css)and) mire los encabezados de la memoria caché antes y después de realizar este cambio. Encuentre una URL de elemento de ejemplo haciendo una fuente de vista en cualquier página.

Después del cambio, debería ver que la caducidad de la memoria caché está establecida en un año en el futuro.

+0

Excelente respuesta, especialmente con los módulos de encabezados y vencimientos, ya que de hecho necesitaba habilitarlos. Verifiqué los encabezados antes y después y verifiqué el cambio. ¡Gracias! – coreyt

+1

FYI, simplemente puede llamar a a2enmod con el módulo después de él. Por ejemplo, "sudo a2enmod expira". – nirvdrum

+0

Todavía me pregunto POR QUÉ necesito hacer esto. Lo probé y funciona muy bien, sí. Pero mi configuración predeterminada de Apache2 devuelve Not Modified 301 para archivos sin ninguna configuración especial (por ejemplo, la página de bienvenida de Red Hat). Pero una vez que esto se maneja a través de mod_passenger, no funciona. Supongo que mod_passenger no hace esto bien por defecto. – lzap

Cuestiones relacionadas