ubicacion servidor index httpd hat fichero configurar configuración configuracion conf basica apache mod-expires image-caching

servidor - fichero httpd conf apache ubuntu



Almacenamiento en caché de imágenes del sitio web con Apache (4)

Con la directiva filesMatch , en lugar de ExpiresByType , puede agrupar Content-Type por subtype correspondiente (por ejemplo, image/* ), en lugar de enumerar cada par de type/subtype , no subtype (por ejemplo, image/jpeg , image/png ).

#Set caching on image files for 11 months <filesMatch "/.(ico|gif|jpg|png)$"> ExpiresActive On ExpiresDefault "access plus 11 month" Header append Cache-Control "public" </filesMatch>

Según este artículo de Google , caduqué no más de 1 año ( access plus 11 month ) y agregué Cache-Control "public" para habilitar el almacenamiento en caché de HTTPS para Firefox.

Para CSS y JS, Google recomienda un período de caducidad de 1 semana.

<filesMatch "/.(css|js)$"> ExpiresActive On ExpiresDefault "access plus 1 week" Header append Cache-Control "public" </filesMatch>

¿Cómo puedo obtener contenido estático en Apache para que {almacenado en la caché por el navegador} y no {verificado por frescura {con cada solicitud}}?

Estoy trabajando en un sitio web alojado en el servidor web Apache. Recientemente, estaba probando algo con encabezados (Content-Type para diferentes tipos de contenido) y vi muchas solicitudes condicionales de imágenes. Ejemplo:

200 /index.php?page=1234&action=list 304 /favicon.ico 304 /img/logo.png 304 /img/arrow.png (etc.)

Aunque los archivos de imagen son contenidos estáticos y el navegador los almacena en caché, cada vez que un usuario abre una página que los vincula a ellos, se los solicita condicionalmente, a lo que envían "304 Not Modified". Eso es bueno (menos datos transferidos), pero significa más de 20 solicitudes con cada carga de página (carga de página más larga debido a todos los viajes de ida y vuelta, incluso con Keep-Alive y pipelining habilitados).

¿Cómo le digo al navegador que conserve el archivo existente y no busque una versión más nueva?

EDITAR: el método mod_expires funciona, incluso con el favicon.


Con respecto a favicon.ico, póngalo en la raíz del documento del servidor, diga / var / www / html y añádalo a /etc/httpd/conf/httpd.conf en la sección Alias: -

Alias /favicon.ico "/var/www/html/favicon.ico" <Directory "/var/www/html"> <Files favicon.ico> ExpiresActive On ExpiresDefault "access plus 1 month" </Files> </Directory>

Entonces, un solo favicon.ico funcionará para todos los sitios alojados virtuales ya que lo está creando. Después de que un usuario visite su sitio, cualquier visita adicional se basará en la copia del caché del navegador durante un mes y no desde la web.

No pude conseguir

ExpiresByType image/ico "access plus 1 month"

para trabajar en absoluto. Tal vez tiene que ser tipo texto / simple como se sugiere arriba. En cualquier caso, ExpiresDefault funciona bien.


Si configura el encabezado Expires en su respuesta http para sus imágenes estáticas, su servidor no se volverá a verificar para esa imagen después de la primera descarga hasta que haya transcurrido el tiempo especificado, por ejemplo, si descargo un archivo de su servidor ahora que le da Expires encabezado como

Expires: Fri, 1 Jan 2010 00:00:01 GMT

entonces mi navegador no lo buscará nuevamente desde su servidor hasta 2010, a menos que borre mi caché / haga una actualización forzosa (Ctrl + F5 en Windows).

Hay una introducción simple para configurar esto here , y una lista de otras respuestas posiblemente útiles en wikipedia


Expires módulo de Expires de Apache soluciona esto; debe cargarse en la configuración del servidor y configurarse en .htaccess (o en la configuración del servidor).

Con un encabezado Expires , el recurso solo se solicita la primera vez. Antes de la fecha de vencimiento, las siguientes solicitudes se cumplen desde la memoria caché del navegador. Una vez que expira el tiempo especificado y se necesita el recurso, solo se vuelve a solicitar (condicionalmente, se devolverá un 304 para un recurso no modificado). La única forma confiable de borrarlo de la memoria caché antes de que caduque es manualmente o forzando una actualización (generalmente Ctrl-F5). (Esto podría ser un problema si el recurso cambia mientras tanto, pero las imágenes estáticas no cambian con frecuencia).

# enable the directives - assuming they''re not enabled globally ExpiresActive on # send an Expires: header for each of these mimetypes (as defined by server) ExpiresByType image/png "access plus 1 month" ExpiresByType image/gif "access plus 1 month" ExpiresByType image/jpeg "access plus 1 month" # css may change a bit sometimes, so define shorter expiration ExpiresByType text/css "access plus 1 days"

Para favicon.ico, se necesita un poco más de trabajo (Apache normalmente no reconoce los archivos de los iconos de Windows, y los envía como texto / plano predeterminado).

# special MIME type for icons - see http://www.iana.org/assignments/media-types/image/vnd.microsoft.icon AddType image/vnd.microsoft.icon .ico # now we have icon MIME type, we can use it # my favicon doesn''t change much ExpiresByType image/vnd.microsoft.icon "access plus 3 months"

¡Y listo, It Works ™!