Pregunta

Estoy intentando permitir que expira cabeceras de imágenes según lo recomendado por YSlow. Estoy seguro de que tenía este trabajo antes, pero ahora cuando compruebo YSlow que dice que no están siendo almacenados en caché.

Para mi .htaccess, me han tratado:

ExpiresActive on
ExpiresDefault A0
<FilesMatch "\.(gif|ico|jpg|png)$">
    ExpiresDefault A29030400
    Header append Cache-Control "public"
</FilesMatch>

y

ExpiresActive on
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType image/x-icon "access plus 1 month"

http://www.seoconsultants.com/tools/headers.asp da el siguiente resultado para una de mis imágenes:

HTTP Status Code: HTTP/1.1 200 OK
Date: Mon, 05 Oct 2009 20:12:04 GMT
Server: Apache/2.0.63 (Unix) mod_ssl/2.0.63 OpenSSL/0.9.8e-fips-rhel5 mod_bwlimited/1.4 PHP/5.2.8
X-Powered-By: PHP/5.2.8
Set-Cookie: PHPSESSID=5d11f4d8aa37ceee6605786e59ff4f0f; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Set-Cookie: lastlogin=1254773024; expires=Mon, 02-Nov-2009 20:12:04 GMT
Connection: close
Content-Type: image/jpeg

La parte Set-Cookie parece correcto pero la cabecera Expira no lo es. ¿Cómo se configura expira correctamente y por qué se diferencian? He comprobado el doble que mod_expires y mod_headers están habilitadas.

¿Fue útil?

Solución

A partir de la cabecera Set-Cookie, parece que esto es parte de una sesión de php. php desactiva automáticamente el almacenamiento en caché después de un session_start ().

Puede modificar este comportamiento cambiando session.cache_limiter en su php.ini. Ver el PHP página del manual para los diversos ajustes.

Como alternativa, se podría tratar de usar "set" en lugar de "añadir" para anular los encabezados en su .htaccess.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top