Serve static assets with an efficient cache policy
-
I’ve added Expires header lifetime: 15552000 in Browser Cache in all sections. But Pagespeed Insights still shows the “Serve static assets with an efficient cache policy” warning. What can be done to fix this?
Thanks.The page I need help with: [log in to see the link]
-
Hello @knzzz
Thank you for reaching out and I am happy to assist you with this.
I’ve checked the test results and your website and I can confirm that the expires header and cache-control header is not set for static files.
Can you please check if Browser Cache is enabled in Performance>Gneral settings? If so, check if the “Set expires header” and “Cache-control header” is enabled in Performance>Browser Cache, sections “CSS&JS” “Media&Other files” and “HTML&XML”. If not, enable those, save all settings and purge the cache and let me know if the problem persists.
Also, make sure that you don’t have any custom Browser Cache rules added to your .htaccess file to avoid any potential conflict with W3 Total Cache rules.I hope this helps!
Thanks!
Hello,
Thank you for your reply. Yes, those options are already checked. I’ve purged the cache.Hello @knzzz
Thank you for the information.
Can you please check and share the content of the .htaccess file so we can make sure that the W3TC rules are set for Browser Caching?
If the rules are there, there is a chance that some .htaccess file on a higher level or httpd.conf file is handling those rules.
I can see that the Etag, gzip compression and last modified header are set on the static files.
Try enabling “Set W3 Total Cache header” in Performance>Browser Cache, general section, save all settings and purge the cache, so we can confirm that the rules are taking effect.
Thanks!Enabled Set W3 Total Cache header and purged the cache. Here is the .htaccess file
# BEGIN W3TC Browser Cache <IfModule mod_mime.c> AddType text/css .css AddType text/x-component .htc AddType application/x-javascript .js AddType application/javascript .js2 AddType text/javascript .js3 AddType text/x-js .js4 AddType text/html .html .htm AddType text/richtext .rtf .rtx AddType text/plain .txt AddType text/xsd .xsd AddType text/xsl .xsl AddType text/xml .xml AddType video/asf .asf .asx .wax .wmv .wmx AddType video/avi .avi AddType image/avif .avif AddType image/avif-sequence .avifs AddType image/bmp .bmp AddType application/java .class AddType video/divx .divx AddType application/msword .doc .docx AddType application/vnd.ms-fontobject .eot AddType application/x-msdownload .exe AddType image/gif .gif AddType application/x-gzip .gz .gzip AddType image/x-icon .ico AddType image/jpeg .jpg .jpeg .jpe AddType image/webp .webp AddType application/json .json AddType application/vnd.ms-access .mdb AddType audio/midi .mid .midi AddType video/quicktime .mov .qt AddType audio/mpeg .mp3 .m4a AddType video/mp4 .mp4 .m4v AddType video/mpeg .mpeg .mpg .mpe AddType video/webm .webm AddType application/vnd.ms-project .mpp AddType application/x-font-otf .otf AddType application/vnd.ms-opentype ._otf AddType application/vnd.oasis.opendocument.database .odb AddType application/vnd.oasis.opendocument.chart .odc AddType application/vnd.oasis.opendocument.formula .odf AddType application/vnd.oasis.opendocument.graphics .odg AddType application/vnd.oasis.opendocument.presentation .odp AddType application/vnd.oasis.opendocument.spreadsheet .ods AddType application/vnd.oasis.opendocument.text .odt AddType audio/ogg .ogg AddType video/ogg .ogv AddType application/pdf .pdf AddType image/png .png AddType application/vnd.ms-powerpoint .pot .pps .ppt .pptx AddType audio/x-realaudio .ra .ram AddType image/svg+xml .svg .svgz AddType application/x-shockwave-flash .swf AddType application/x-tar .tar AddType image/tiff .tif .tiff AddType application/x-font-ttf .ttf .ttc AddType application/vnd.ms-opentype ._ttf AddType audio/wav .wav AddType audio/wma .wma AddType application/vnd.ms-write .wri AddType application/font-woff .woff AddType application/font-woff2 .woff2 AddType application/vnd.ms-excel .xla .xls .xlsx .xlt .xlw AddType application/zip .zip </IfModule> <IfModule mod_expires.c> ExpiresActive On ExpiresByType text/css A15552000 ExpiresByType text/x-component A15552000 ExpiresByType application/x-javascript A15552000 ExpiresByType application/javascript A15552000 ExpiresByType text/javascript A15552000 ExpiresByType text/x-js A15552000 ExpiresByType text/html A3600 ExpiresByType text/richtext A3600 ExpiresByType text/plain A3600 ExpiresByType text/xsd A3600 ExpiresByType text/xsl A3600 ExpiresByType text/xml A3600 ExpiresByType video/asf A15552000 ExpiresByType video/avi A15552000 ExpiresByType image/avif A15552000 ExpiresByType image/avif-sequence A15552000 ExpiresByType image/bmp A15552000 ExpiresByType application/java A15552000 ExpiresByType video/divx A15552000 ExpiresByType application/msword A15552000 ExpiresByType application/vnd.ms-fontobject A15552000 ExpiresByType application/x-msdownload A15552000 ExpiresByType image/gif A15552000 ExpiresByType application/x-gzip A15552000 ExpiresByType image/x-icon A15552000 ExpiresByType image/jpeg A15552000 ExpiresByType image/webp A15552000 ExpiresByType application/json A15552000 ExpiresByType application/vnd.ms-access A15552000 ExpiresByType audio/midi A15552000 ExpiresByType video/quicktime A15552000 ExpiresByType audio/mpeg A15552000 ExpiresByType video/mp4 A15552000 ExpiresByType video/mpeg A15552000 ExpiresByType video/webm A15552000 ExpiresByType application/vnd.ms-project A15552000 ExpiresByType application/x-font-otf A15552000 ExpiresByType application/vnd.ms-opentype A15552000 ExpiresByType application/vnd.oasis.opendocument.database A15552000 ExpiresByType application/vnd.oasis.opendocument.chart A15552000 ExpiresByType application/vnd.oasis.opendocument.formula A15552000 ExpiresByType application/vnd.oasis.opendocument.graphics A15552000 ExpiresByType application/vnd.oasis.opendocument.presentation A15552000 ExpiresByType application/vnd.oasis.opendocument.spreadsheet A15552000 ExpiresByType application/vnd.oasis.opendocument.text A15552000 ExpiresByType audio/ogg A15552000 ExpiresByType video/ogg A15552000 ExpiresByType application/pdf A15552000 ExpiresByType image/png A15552000 ExpiresByType application/vnd.ms-powerpoint A15552000 ExpiresByType audio/x-realaudio A15552000 ExpiresByType image/svg+xml A15552000 ExpiresByType application/x-shockwave-flash A15552000 ExpiresByType application/x-tar A15552000 ExpiresByType image/tiff A15552000 ExpiresByType application/x-font-ttf A15552000 ExpiresByType application/vnd.ms-opentype A15552000 ExpiresByType audio/wav A15552000 ExpiresByType audio/wma A15552000 ExpiresByType application/vnd.ms-write A15552000 ExpiresByType application/font-woff A15552000 ExpiresByType application/font-woff2 A15552000 ExpiresByType application/vnd.ms-excel A15552000 ExpiresByType application/zip A15552000 </IfModule> <IfModule mod_deflate.c> <IfModule mod_filter.c> AddOutputFilterByType DEFLATE text/css text/x-component application/x-javascript application/javascript text/javascript text/x-js text/html text/richtext text/plain text/xsd text/xsl text/xml image/bmp application/java application/msword application/vnd.ms-fontobject application/x-msdownload image/x-icon application/json application/vnd.ms-access video/webm application/vnd.ms-project application/x-font-otf application/vnd.ms-opentype application/vnd.oasis.opendocument.database application/vnd.oasis.opendocument.chart application/vnd.oasis.opendocument.formula application/vnd.oasis.opendocument.graphics application/vnd.oasis.opendocument.presentation application/vnd.oasis.opendocument.spreadsheet application/vnd.oasis.opendocument.text audio/ogg application/pdf application/vnd.ms-powerpoint image/svg+xml application/x-shockwave-flash image/tiff application/x-font-ttf application/vnd.ms-opentype audio/wav application/vnd.ms-write application/font-woff application/font-woff2 application/vnd.ms-excel <IfModule mod_mime.c> # DEFLATE by extension AddOutputFilter DEFLATE js css htm html xml </IfModule> </IfModule> </IfModule> <FilesMatch "\.(css|htc|less|js|js2|js3|js4|CSS|HTC|LESS|JS|JS2|JS3|JS4)$"> FileETag MTime Size <IfModule mod_headers.c> Header set Pragma "public" Header append Cache-Control "public" Header unset Set-Cookie Header set X-Powered-By "W3 Total Cache/2.2.1" </IfModule> </FilesMatch> <FilesMatch "\.(html|htm|rtf|rtx|txt|xsd|xsl|xml|HTML|HTM|RTF|RTX|TXT|XSD|XSL|XML)$"> FileETag MTime Size <IfModule mod_headers.c> Header set Pragma "public" Header append Cache-Control "public" Header set X-Powered-By "W3 Total Cache/2.2.1" </IfModule> </FilesMatch> <FilesMatch "\.(asf|asx|wax|wmv|wmx|avi|avif|avifs|bmp|class|divx|doc|docx|eot|exe|gif|gz|gzip|ico|jpg|jpeg|jpe|webp|json|mdb|mid|midi|mov|qt|mp3|m4a|mp4|m4v|mpeg|mpg|mpe|webm|mpp|otf|_otf|odb|odc|odf|odg|odp|ods|odt|ogg|ogv|pdf|png|pot|pps|ppt|pptx|ra|ram|svg|svgz|swf|tar|tif|tiff|ttf|ttc|_ttf|wav|wma|wri|woff|woff2|xla|xls|xlsx|xlt|xlw|zip|ASF|ASX|WAX|WMV|WMX|AVI|AVIF|AVIFS|BMP|CLASS|DIVX|DOC|DOCX|EOT|EXE|GIF|GZ|GZIP|ICO|JPG|JPEG|JPE|WEBP|JSON|MDB|MID|MIDI|MOV|QT|MP3|M4A|MP4|M4V|MPEG|MPG|MPE|WEBM|MPP|OTF|_OTF|ODB|ODC|ODF|ODG|ODP|ODS|ODT|OGG|OGV|PDF|PNG|POT|PPS|PPT|PPTX|RA|RAM|SVG|SVGZ|SWF|TAR|TIF|TIFF|TTF|TTC|_TTF|WAV|WMA|WRI|WOFF|WOFF2|XLA|XLS|XLSX|XLT|XLW|ZIP)$"> FileETag MTime Size <IfModule mod_headers.c> Header set Pragma "public" Header append Cache-Control "public" Header unset Set-Cookie Header set X-Powered-By "W3 Total Cache/2.2.1" </IfModule> </FilesMatch> <IfModule mod_headers.c> Header set Referrer-Policy "no-referrer-when-downgrade" </IfModule> # END W3TC Browser Cache # BEGIN W3TC Page Cache core <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{HTTPS} =on RewriteRule .* - [E=W3TC_SSL:_ssl] RewriteCond %{SERVER_PORT} =443 RewriteRule .* - [E=W3TC_SSL:_ssl] RewriteCond %{HTTP:X-Forwarded-Proto} =https [NC] RewriteRule .* - [E=W3TC_SSL:_ssl] RewriteCond %{HTTP:Accept-Encoding} gzip RewriteRule .* - [E=W3TC_ENC:_gzip] RewriteCond %{HTTP_COOKIE} w3tc_preview [NC] RewriteRule .* - [E=W3TC_PREVIEW:_preview] RewriteCond %{REQUEST_METHOD} !=POST RewriteCond %{QUERY_STRING} ="" RewriteCond %{HTTP_COOKIE} !(comment_author|wp\-postpass|w3tc_logged_out|wordpress_logged_in|wptouch_switch_toggle) [NC] RewriteCond %{REQUEST_URI} \/$ RewriteCond "%{DOCUMENT_ROOT}/wp-content/cache/page_enhanced/%{HTTP_HOST}/%{REQUEST_URI}/_index%{ENV:W3TC_SSL}%{ENV:W3TC_PREVIEW}.html%{ENV:W3TC_ENC}" -f RewriteRule .* "/wp-content/cache/page_enhanced/%{HTTP_HOST}/%{REQUEST_URI}/_index%{ENV:W3TC_SSL}%{ENV:W3TC_PREVIEW}.html%{ENV:W3TC_ENC}" [L] </IfModule> # END W3TC Page Cache core # BEGIN WordPress # The directives (lines) between "BEGIN WordPress" and "END WordPress" are # dynamically generated, and should only be modified via WordPress filters. # Any changes to the directives between these markers will be overwritten. <IfModule mod_rewrite.c> RewriteEngine On RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress
Hello @knzzz
The .htaccess rules are there and look fine.
The configuration directives found in a .htaccess file are applied to the directory in which the .htaccess file is found, and to all subdirectories thereof. However, it is important to also remember that there may have been .htaccess files in directories higher up. Directives are applied in the order that they are found. Therefore, a .htaccess file in a particular directory may override directives found in .htaccess files found higher up in the directory tree. And those, in turn, may have overridden directives found yet higher up, or in the main server configuration file itself.
You should check for any .htaccess files in the directories above and also check the main httpd.conf.Thanks!
- The topic ‘Serve static assets with an efficient cache policy’ is closed to new replies.