PageSpeed Suggestion: Using Browser Caching ... How?
I have a WordPress site with a custom theme that I created myself. I am currently working on Google PageSpeed Insights suggestions to improve the user experience on my website.
PageSpeed suggests "Use browser caching". Below are the results:
**Leverage browser caching**
Setting an expiry date or a maximum age in the HTTP headers for static resources
instructs the browser to load previously downloaded resources from local disk
rather than over the network.
Leverage browser caching for the following cacheable resources:
http:.//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js (60 minutes)
http:.//pagead2.googlesyndication.com/pagead/osd.js (60 minutes)
http:.//www.google.com/…callback%22%3A%22__gcse.sacb%22%7D%5D%7D (60 minutes)
So basically, this is asking me to set the "expiration time" for the Adsense script cache to 60 minutes.
I tried to check the caching status of my website using REDbot. Below are the results:
General
The server clock is set correctly.
Content Consolidation
The resource does not transmit Vary sequentially.
Supports content negotiation for gzip compression, keeping 72%.
Caching
This answer allows you to keep all caches.
This answer allows the cache to assign its own freshness lifetime.
My understanding of the results is that my site allows for caching and allows the cache to schedule its own refresh time. I don't use HTML "meta" tags for caching, so basically my server is configured this way.
Now my question is how would I manually set the expiration time of scripts to 60 minutes. I know how to use a .htaccess file to set caching duration for different file types ((using FilesMatch)). But apparently this method works for file types and not for individual scripts in ".php" files. So how can I change the adsense scripts cache expiration time?
((This is my first question about stack, so if there is any bug or flaw please point it for me .. Thanks))
UPDATE:
Following the answer from "Andrew" I added the following to my .htaccess file.
## EXPIRES CACHING ##
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access plus 1 hour"
ExpiresByType image/jpeg "access plus 1 hour"
ExpiresByType image/gif "access plus 1 hour"
ExpiresByType image/png "access plus 1 hour"
ExpiresByType text/css "access plus 1 hour"
ExpiresByType text/html "access plus 1 hour"
ExpiresByType text/x-javascript "access plus 1 hour"
ExpiresByType image/x-icon "access plus 1 hour"
ExpiresDefault "access plus 1 hour"
</IfModule>
## EXPIRES CACHING ##
But it gave me strange results. Pagespeed has now lowered my score and now has the following guidelines:
Use browser caching Setting an expiration date or maximum age in the HTTP headers for static resources instructs the browser to load previously downloaded resources from the local drive rather than the network. Use browser caching for the following cached resources:
http.://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js (60 minutes) http.://pagead2.googlesyndication.com/pagead/osd.js (60 minutes) http.://www.google.com/…callback%22%3A%22__gcse.sacb%22%7D%5D%7D (60 minutes) http.://www.mananatomy.com/…heme/images/mananatomy_logo_modified.jpg (60 minutes) http.://www.mananatomy.com/…mages/mananatomy_logo_modified_small.jpg (60 minutes) http.://www.mananatomy.com/…s/mananatomy-theme/images/sidebar_bg.jpg (60 minutes) http.://www.mananatomy.com/…ontent/themes/mananatomy-theme/style.css (60 minutes) http.://www.mananatomy.com/…t/uploads/2010/12/basic-anatomy-logo.jpg (60 minutes) http.://www.mananatomy.com/…nt/uploads/2010/12/body-systems-logo.jpg (60 minutes) http.://www.mananatomy.com/…ntent/uploads/2010/12/histology-logo.jpg (60 minutes)
So it got even more confusing. Any help ???
source to share
read here:
Leverage browser caching for the following cacheable resources:
http:.//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js (60 minutes)
http:.//pagead2.googlesyndication.com/pagead/osd.js (60 minutes)
http:.//www.google.com/…callback%22%3A%22__gcse.sacb%22%7D%5D%7D (60 minutes)
Your resources are not cached!
source to share
The parenthesis in front (60 minutes) is not a suggestion from Google to set the cache for that amount. Actually Google tells you that the cache is set very low (60 minutes), i.e. 1 hour
For images and other static files, set the cache to at least 1 month!
About google JS files, you can't do anything .. you can't cache external links (esp javascript) without loading your site up
source to share
I have used some code to improve browser caching performance to improve website performance and got good results.
Step 1: Preselect Google Analytics. Just enter the code into the site code.
Step 2: Then added code to the .htaccess file to keep the browser cache history for 1 year or 1 month.
EXPIRES CACHING
ExpiresActive On
ExpiresByType image / jpg "1 year access"
ExpiresByType image / jpeg "access 1 year"
ExpiresByType image / gif "access 1 year"
ExpiresByType image / png "access 1 year"
ExpiresByType text / css "1 month access"
ExpiresByType text / html "1 month access"
ExpiresByType application / pdf "1 month access"
ExpiresByType text / x-javascript "1 month access"
ExpiresByType / x-shockwave-flash application "1 month access"
ExpiresByType image / x-icon "1 year access"
ExpiresDefault expiration date "1 month"
EXPIRES CACHING
Step 3: After you have supplied the above code, added additional code to your .htaccess file.
Cache-Control Header Set "max-age = 2592000, public"
This code will help control the cache on your website and improve website performance as a high situation.
source to share
This is the final header code that covers everything you need to add this code to your .htacess file that you will find in the root of the site.
<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 video/asf .asf .asx .wax .wmv .wmx
AddType video/avi .avi
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 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 A31536000
ExpiresByType text/x-component A31536000
ExpiresByType application/x-javascript A31536000
ExpiresByType application/javascript A31536000
ExpiresByType text/javascript A31536000
ExpiresByType text/x-js A31536000
ExpiresByType video/asf A31536000
ExpiresByType video/avi A31536000
ExpiresByType image/bmp A31536000
ExpiresByType application/java A31536000
ExpiresByType video/divx A31536000
ExpiresByType application/msword A31536000
ExpiresByType application/vnd.ms-fontobject A31536000
ExpiresByType application/x-msdownload A31536000
ExpiresByType image/gif A31536000
ExpiresByType application/x-gzip A31536000
ExpiresByType image/x-icon A31536000
ExpiresByType image/jpeg A31536000
ExpiresByType image/jpg A31536000
ExpiresByType image/webp A31536000
ExpiresByType application/json A31536000
ExpiresByType application/vnd.ms-access A31536000
ExpiresByType audio/midi A31536000
ExpiresByType video/quicktime A31536000
ExpiresByType audio/mpeg A31536000
ExpiresByType video/mp4 A31536000
ExpiresByType video/mpeg A31536000
ExpiresByType video/webm A31536000
ExpiresByType application/vnd.ms-project A31536000
ExpiresByType application/x-font-otf A31536000
ExpiresByType application/vnd.ms-opentype A31536000
ExpiresByType application/vnd.oasis.opendocument.database A31536000
ExpiresByType application/vnd.oasis.opendocument.chart A31536000
ExpiresByType application/vnd.oasis.opendocument.formula A31536000
ExpiresByType application/vnd.oasis.opendocument.graphics A31536000
ExpiresByType application/vnd.oasis.opendocument.presentation A31536000
ExpiresByType application/vnd.oasis.opendocument.spreadsheet A31536000
ExpiresByType application/vnd.oasis.opendocument.text A31536000
ExpiresByType audio/ogg A31536000
ExpiresByType application/pdf A31536000
ExpiresByType image/png A31536000
ExpiresByType application/vnd.ms-powerpoint A31536000
ExpiresByType audio/x-realaudio A31536000
ExpiresByType image/svg+xml A31536000
ExpiresByType application/x-shockwave-flash A31536000
ExpiresByType application/x-tar A31536000
ExpiresByType image/tiff A31536000
ExpiresByType application/x-font-ttf A31536000
ExpiresByType application/vnd.ms-opentype A31536000
ExpiresByType audio/wav A31536000
ExpiresByType audio/wma A31536000
ExpiresByType application/vnd.ms-write A31536000
ExpiresByType application/font-woff A31536000
ExpiresByType application/font-woff2 A31536000
ExpiresByType application/vnd.ms-excel A31536000
ExpiresByType application/zip A31536000
</IfModule>
<IfModule mod_deflate.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 image/webp 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>
<FilesMatch "\.(css|htc|less|js|js2|js3|js4|CSS|HTC|LESS|JS|JS2|JS3|JS4)$">
FileETag MTime Size
<IfModule mod_headers.c>
Header unset Set-Cookie
</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 append Vary User-Agent env=!dont-vary
</IfModule>
</FilesMatch>
<FilesMatch "\.(asf|asx|wax|wmv|wmx|avi|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|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|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|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 unset Set-Cookie
</IfModule>
</FilesMatch>
<FilesMatch "\.(bmp|class|doc|docx|eot|exe|ico|webp|json|mdb|webm|mpp|otf|_otf|odb|odc|odf|odg|odp|ods|odt|ogg|pdf|pot|pps|ppt|pptx|svg|svgz|swf|tif|tiff|ttf|ttc|_ttf|wav|wri|woff|woff2|xla|xls|xlsx|xlt|xlw|BMP|CLASS|DOC|DOCX|EOT|EXE|ICO|WEBP|JSON|MDB|WEBM|MPP|OTF|_OTF|ODB|ODC|ODF|ODG|ODP|ODS|ODT|OGG|PDF|POT|PPS|PPT|PPTX|SVG|SVGZ|SWF|TIF|TIFF|TTF|TTC|_TTF|WAV|WRI|WOFF|WOFF2|XLA|XLS|XLSX|XLT|XLW)$">
<IfModule mod_headers.c>
Header unset Last-Modified
</IfModule>
</FilesMatch>
<IfModule mod_headers.c>
Header set Referrer-Policy "no-referrer-when-downgrade"
</IfModule>
source to share
You will have a solution to this problem by following these steps:
- create a .htpasswd file by going to htaccesstools.com/htpasswd-generator/ and generate a username and password.
-
upload the .htpasswd file to your WordPress wp-admin folder
-
add the following code to your .htaccess file
ErrorDocument 401 default AuthType Basic AuthName "Restricted Area" AuthUserFile /home/public_html/wp-admin/.htpasswd require valid-user
source to share