Como alternativa ao cache do navegador por meio da expiração do mod do Apache , use o FilesMatch (por exemplo, nos casos em que a expiração do mod não pode ser habilitada).
Em primeiro lugar, desative ETag headers
. Ao remover o cabeçalho ETag, você desabilita caches e navegadores de validar arquivos, então eles são forçados a confiar em seu cabeçalho Cache-Control e Expires.
Em segundo lugar, combine os tipos MIME e defina os cabeçalhos Cache-Control e Expires.
Em .htaccess
:
# ----------------------------------------------------------------------
# | ETags |
# ----------------------------------------------------------------------
# Remove `ETags` as resources are sent with far-future expires headers.
#
# https://developer.yahoo.com/performance/rules.html#etags
# https://tools.ietf.org/html/rfc7232#section-2.3
# `FileETag None` doesn't work in all cases.
<IfModule mod_headers.c>
Header unset ETag
</IfModule>
FileETag None
# 1 YEAR
<FilesMatch ".(flv|ico|pdf|avi|mov|ppt|doc|mp3|wmv|wav)$">
Header set Cache-Control "max-age=31536000, public"
</FilesMatch>
# ~ 1 MONTH
<FilesMatch ".(jpg|jpeg|png|gif|swf)$">
Header set Cache-Control "max-age=2629743, public"
</FilesMatch>
# 1 WEEK
<FilesMatch ".(txt|xml|js|css)$">
Header set Cache-Control "max-age=604800, public"
</FilesMatch>
# NEVER CACHE - notice the extra directives
<FilesMatch ".(html|htm|php|cgi|pl)$">
Header set Cache-Control "max-age=0, private, no-store, no-cache, must-revalidate"
</FilesMatch>