headers - http para dummies
¿Cómo configurar encabezados HTTP(para el control de caché)? (8)
Como escribí (en http://www.williamferreira.net/blog/2011/10/04/controle-de-cache-apache/ ) es mejor usar el archivo .htacces. Sin embargo ten cuidado con el tiempo que dejas los contenidos en la caché.
Utilizar:
<FilesMatch "/.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$">
Header set Cache-Control "max-age=604800, public"
</FilesMatch>
Donde: 604800 = 7 días
PS: Esto se puede utilizar para restablecer cualquier encabezado
¿Cómo habilitar el almacenamiento en caché del navegador para mi sitio? ¿Acabo de poner el control de caché: público en algún lugar de mi encabezado de esta manera?
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
Cache-Control:public;
>
Estoy usando la última versión de PHP que se está desarrollando en la última versión de XAMPP.
Este es el mejor .htaccess
que he usado en mi sitio web real:
<ifModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_item_include file .(html?|txt|css|js|php|pl)$
mod_gzip_item_include handler ^cgi-script$
mod_gzip_item_include mime ^text/.*
mod_gzip_item_include mime ^application/x-javascript.*
mod_gzip_item_exclude mime ^image/.*
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
</ifModule>
##Tweaks##
Header set X-Frame-Options SAMEORIGIN
## EXPIRES CACHING ##
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access 1 year"
ExpiresByType image/jpeg "access 1 year"
ExpiresByType image/gif "access 1 year"
ExpiresByType image/png "access 1 year"
ExpiresByType text/css "access 1 month"
ExpiresByType text/html "access 1 month"
ExpiresByType application/pdf "access 1 month"
ExpiresByType text/x-javascript "access 1 month"
ExpiresByType application/x-shockwave-flash "access 1 month"
ExpiresByType image/x-icon "access 1 year"
ExpiresDefault "access 1 month"
</IfModule>
## EXPIRES CACHING ##
<IfModule mod_headers.c>
Header set Connection keep-alive
<filesmatch "/.(ico|flv|gif|swf|eot|woff|otf|ttf|svg)$">
Header set Cache-Control "max-age=2592000, public"
</filesmatch>
<filesmatch "/.(jpg|jpeg|png)$">
Header set Cache-Control "max-age=1209600, public"
</filesmatch>
# css and js should use private for proxy caching https://developers.google.com/speed/docs/best-practices/caching#LeverageProxyCaching
<filesmatch "/.(css)$">
Header set Cache-Control "max-age=31536000, private"
</filesmatch>
<filesmatch "/.(js)$">
Header set Cache-Control "max-age=1209600, private"
</filesmatch>
<filesMatch "/.(x?html?|php)$">
Header set Cache-Control "max-age=600, private, must-revalidate"
</filesMatch>
</IfModule>
La etiqueta de control de meta caché permite a los editores web definir cómo las cachés deben manejar las páginas. Incluyen directivas para declarar lo que debería ser almacenable en caché, lo que puede ser almacenado por cachés, modificaciones del mecanismo de caducidad y controles de revalidación y recarga.
Los valores permitidos son:
Público: se puede almacenar en caché en cachés públicos compartidos
Privado: solo se puede almacenar en caché en el caché privado
no-caché - no puede ser almacenado en caché
no-Store - puede ser almacenado en caché pero no archivado
Por favor tenga cuidado con la sensibilidad de los casos. Agregue la siguiente etiqueta meta en la fuente de su página web. La diferencia en la ortografía al final de la etiqueta es que usa "/> = xml o"> = html.
<meta http-equiv="Cache-control" content="public">
<meta http-equiv="Cache-control" content="private">
<meta http-equiv="Cache-control" content="no-cache">
<meta http-equiv="Cache-control" content="no-store">
Fuente-> MetaTags
La página en http://www.askapache.com/htaccess/apache-speed-cache-control.html sugiere usar algo como esto:
Añadir encabezados de control de caché
Esto va en su archivo raíz .htaccess, pero si tiene acceso a httpd.conf, es mejor.
Este código utiliza la directiva FilesMatch y la directiva de encabezado para agregar encabezados de control de caché a ciertos archivos.
# 480 weeks <FilesMatch "/.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$"> Header set Cache-Control "max-age=290304000, public" </FilesMatch>
OWASP recomienda lo siguiente,
Siempre que sea posible, asegúrese de que el encabezado HTTP de cache-control esté configurado con no-cache, no-store, must-revalidate, private; y que el encabezado HTTP pragma se establece con no-cache.
<IfModule mod_headers.c>
Header set Cache-Control "private, no-cache, no-store, proxy-revalidate, no-transform"
Header set Pragma "no-cache"
</IfModule>
Para el servidor Apache, debe revisar mod_expires para configurar mod_expires de Caducidad y Control de caché.
Alternativamente, puede usar la directiva de Header para agregar Cache-Control por su cuenta:
Header set Cache-Control "max-age=290304000, public"
Para usar el control de caché en HTML, usa la etiqueta meta , por ejemplo
<meta http-equiv="Cache-control" content="public">
El valor en el campo de contenido se define como uno de los cuatro valores a continuación.
Parte de la información en el encabezado de Cache-Control
es la siguiente
HTTP 1.1. Valores permitidos = PUBLIC | PRIVADO | NO-CACHE | NO-TIENDA.
Público: se puede almacenar en caché en cachés públicos compartidos.
Privado: solo se puede almacenar en caché en el caché privado.
Sin caché: no se puede almacenar en caché.
No-Store - puede ser almacenado en caché pero no archivado.La directiva CACHE-CONTROL: NO-CACHE indica que la información almacenada en caché no debe utilizarse y, en cambio, las solicitudes deben enviarse al servidor de origen. Esta directiva tiene la misma semántica que el PRAGMA: NO-CACHE.
Los clientes DEBEN incluir tanto PRAGMA: NO-CACHE como CACHE-CONTROL: NO-CACHE cuando se envía una solicitud de no caché a un servidor que no se sabe que es compatible con HTTP / 1.1. Ver también CADUCOS.
Nota: puede ser mejor especificar los comandos de caché en HTTP que en las declaraciones META, donde pueden influir más que el navegador, pero los proxies y otros intermediarios que pueden almacenar información en caché.
Puedes configurar los encabezados en PHP usando:
<?php
//set headers to NOT cache a page
header("Cache-Control: no-cache, must-revalidate"); //HTTP 1.1
header("Pragma: no-cache"); //HTTP 1.0
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past
//or, if you DO want a file to cache, use:
header("Cache-Control: max-age=2592000"); //30days (60sec * 60min * 24hours * 30days)
?>
Tenga en cuenta que los encabezados exactos utilizados dependerán de sus necesidades (y si necesita admitir HTTP 1.0 y / o HTTP 1.1 )