php - estos - Aproveche el almacenamiento en caché del navegador, ¿cómo funciona en apache o.htaccess?
aprovechar el almacenamiento en caché del navegador wordpress (4)
Que hacer aquí? Tengo una enorme lista de archivos que Google Speed Page dijo "Aproveche el almacenamiento en caché del navegador" ... ¿pero no sé cómo? ¿Desordena o cambio el archivo de configuración de Apache (a continuación) o coloco algo en mi página .htaccess?
<IfModule mod_proxy.c>
ProxyRequests Off
CacheRoot "/var/run/proxy"
CacheSize 1024
CacheGcInterval 24
#CacheMaxExpire 24
#CacheLastModifiedFactor 0.1
#CacheDefaultExpire 1
#NoCache a_domain.com another_domain.edu joes.garage_sale.com
<Directory "disabled_proxy">
Allow from example.com
Deny from all
Order Deny,Allow
</Directory>
</IfModule>
##
#### mod_expires is configured so that all static files but images
#### expire after 60 seconds. Any response that has a life span of more
#### than 5 seconds (see webperfcache.conf) will be cached by webperfcache.
#### Make sure your CGIs return a "Cache-Control: no-cache" header if you
#### elect to make your dynamically generated HTML pages not cache-able.
#### If all your HTML pages are static you may also increase ExpiresDefault.
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault A60
ExpiresByType image/bmp A3600
ExpiresByType image/gif A3600
ExpiresByType image/ief A3600
ExpiresByType image/jpeg A3600
ExpiresByType image/png A3600
ExpiresByType image/tiff A3600
ExpiresByType image/x-cmu-raster A3600
ExpiresByType image/x-portable-anymap A3600
ExpiresByType image/x-portable-bitmap A3600
ExpiresByType image/x-portable-graymap A3600
ExpiresByType image/x-portable-pixmap A3600
ExpiresByType image/x-rgb A3600
ExpiresByType image/x-xbitmap A3600
ExpiresByType image/x-xpixmap A3600
ExpiresByType image/x-xwindowdump A3600
ExpiresByType audio/basic A3600
ExpiresByType audio/midi A3600
ExpiresByType audio/mpeg A3600
ExpiresByType audio/x-aiff A3600
ExpiresByType audio/x-pn-realaudio A3600
ExpiresByType audio/x-pn-realaudio-plugin A3600
ExpiresByType audio/x-realaudio A3600
ExpiresByType audio/x-wav A3600
ExpiresByType video/mpeg A3600
ExpiresByType video/quicktime A3600
ExpiresByType video/x-msvideo A3600
ExpiresByType video/x-sgi-movie A3600
</IfModule>
Aproveché la oportunidad para proporcionar el código .htaccess
completo para pasar Google PageSpeed Insight:
- Habilitar la compresión
- Aproveche el almacenamiento en caché del navegador
# Enable Compression <IfModule mod_deflate.c> AddOutputFilterByType DEFLATE application/javascript AddOutputFilterByType DEFLATE application/rss+xml AddOutputFilterByType DEFLATE application/vnd.ms-fontobject AddOutputFilterByType DEFLATE application/x-font AddOutputFilterByType DEFLATE application/x-font-opentype AddOutputFilterByType DEFLATE application/x-font-otf AddOutputFilterByType DEFLATE application/x-font-truetype AddOutputFilterByType DEFLATE application/x-font-ttf AddOutputFilterByType DEFLATE application/x-javascript AddOutputFilterByType DEFLATE application/xhtml+xml AddOutputFilterByType DEFLATE application/xml AddOutputFilterByType DEFLATE font/opentype AddOutputFilterByType DEFLATE font/otf AddOutputFilterByType DEFLATE font/ttf AddOutputFilterByType DEFLATE image/svg+xml AddOutputFilterByType DEFLATE image/x-icon AddOutputFilterByType DEFLATE text/css AddOutputFilterByType DEFLATE text/html AddOutputFilterByType DEFLATE text/javascript AddOutputFilterByType DEFLATE text/plain </IfModule> <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> # Leverage Browser 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> <IfModule mod_headers.c> <filesmatch "/.(ico|flv|jpg|jpeg|png|gif|css|swf)$"> Header set Cache-Control "max-age=2678400, public" </filesmatch> <filesmatch "/.(html|htm)$"> Header set Cache-Control "max-age=7200, private, must-revalidate" </filesmatch> <filesmatch "/.(pdf)$"> Header set Cache-Control "max-age=86400, public" </filesmatch> <filesmatch "/.(js)$"> Header set Cache-Control "max-age=2678400, private" </filesmatch> </IfModule>
También hay algunas configuraciones para varios servidores web, vea here .
Espero que esto ayude a obtener el puntaje 100/100.
Esto es lo que uso para controlar encabezados / almacenamiento en caché, no soy un profesional de Apache, así que avíseme si hay margen de mejora, pero sé que esto ha funcionado bien en todos mis sitios desde hace un tiempo.
Mod_expires
http://httpd.apache.org/docs/2.2/mod/mod_expires.html
Este módulo controla la configuración de los encabezados HTTP Expira y la directiva max-age del encabezado HTTP Cache-Control en las respuestas del servidor. La fecha de caducidad puede establecerse en relación con la hora en que se modificó por última vez el archivo fuente o en el momento del acceso del cliente.
Estos encabezados HTTP son una instrucción para el cliente sobre la validez y persistencia del documento. Si se almacena en caché, el documento se puede recuperar desde la caché en lugar de desde la fuente hasta que haya transcurrido este tiempo. Después de eso, la copia de caché se considera "caducada" y no válida, y se debe obtener una nueva copia de la fuente.
# BEGIN Expires
<ifModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 1 seconds"
ExpiresByType text/html "access plus 1 seconds"
ExpiresByType image/gif "access plus 2592000 seconds"
ExpiresByType image/jpeg "access plus 2592000 seconds"
ExpiresByType image/png "access plus 2592000 seconds"
ExpiresByType text/css "access plus 604800 seconds"
ExpiresByType text/javascript "access plus 216000 seconds"
ExpiresByType application/x-javascript "access plus 216000 seconds"
</ifModule>
# END Expires
Mod_headers
http://httpd.apache.org/docs/2.2/mod/mod_headers.html
Este módulo proporciona directivas para controlar y modificar encabezados de solicitud y respuesta HTTP. Los encabezados se pueden fusionar, reemplazar o eliminar.
# BEGIN Caching
<ifModule mod_headers.c>
<filesMatch "/.(ico|pdf|flv|jpg|jpeg|png|gif|swf)$">
Header set Cache-Control "max-age=2592000, public"
</filesMatch>
<filesMatch "/.(css)$">
Header set Cache-Control "max-age=604800, public"
</filesMatch>
<filesMatch "/.(js)$">
Header set Cache-Control "max-age=216000, private"
</filesMatch>
<filesMatch "/.(xml|txt)$">
Header set Cache-Control "max-age=216000, public, must-revalidate"
</filesMatch>
<filesMatch "/.(html|htm|php)$">
Header set Cache-Control "max-age=1, private, must-revalidate"
</filesMatch>
</ifModule>
# END Caching
Estuve haciendo lo mismo hace un par de días. Agregué esto a mi archivo .htaccess:
ExpiresActive On
ExpiresByType image/gif A2592000
ExpiresByType image/jpeg A2592000
ExpiresByType image/jpg A2592000
ExpiresByType image/png A2592000
ExpiresByType image/x-icon A2592000
ExpiresByType text/css A86400
ExpiresByType text/javascript A86400
ExpiresByType application/x-shockwave-flash A2592000
#
<FilesMatch "/.(gif¦jpe?g¦png¦ico¦css¦js¦swf)$">
Header set Cache-Control "public"
</FilesMatch>
Y ahora cuando ejecuto la página de velocidad de google, aprovechar el almacenamiento en caché de Browser ya no es una prioridad.
Espero que esto ayude.
Primero debemos verificar si hemos habilitado mod_headers.c y mod_expires.c.
sudo apache2 -l
Si no lo tenemos, tenemos que habilitarlos
sudo a2enmod headers
Entonces tenemos que reiniciar apache
sudo apache2 restart
Por último, agregue las reglas sobre .htaccess (visto en otras respuestas), por ejemplo
ExpiresActive On
ExpiresByType image/gif A2592000
ExpiresByType image/jpeg A2592000
ExpiresByType image/jpg A2592000
ExpiresByType image/png A2592000
ExpiresByType image/x-icon A2592000
ExpiresByType text/css A86400
ExpiresByType text/javascript A86400
ExpiresByType application/x-shockwave-flash A2592000
#
<FilesMatch "/.(gif|jpe?g|png|ico|css|js|swf)$">
Header set Cache-Control "public"
</FilesMatch>