我是脚本和编码的新手。我现在已经开始对加快我的网站兴趣了。为此,我想开始利用浏览器缓存。
我已经阅读了几件事情,但我现在正在努力做出正确的决定。
据我所知,有三种选择:
-expires -max年龄 -Etag(使用最大年龄时)
在我看来,前两个不适合电子商务网站(opencart btw)。但据我所知,它比Etag更容易实现。
我在测试环境中获得了过期和最大年龄,但后来我的网页过时的客户端渲染出现了问题。
总而言之,我想去Etag,但我不知道从哪里开始!是否有人(可能还有opencart经验?)谁可以帮我上路?
提前致谢!
此致
乔治
答案 0 :(得分:1)
ETag的实现并不复杂。以下是.htaccess文件的代码片段,它将为您的图像和其他不经常更改的文件启用ETag:
# ETags Settings (for Cache purposes)
<ifModule mod_headers.c>
<FilesMatch \.(?i:jpeg|jpg|gif|png|css|js|xml)$>
FileETag MTime Size
</FilesMatch>
<FilesMatch \.(?i:php)$>
Header unset ETag
Header set Cache-Control "max-age=0, private, no-store, no-cache, must-revalidate"
Header set Pragma "no-cache"
FileETag None
</FilesMatch>
</ifModule>
# Expires Settings
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 1 month"
# Images
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType image/jpg "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
</IfModule>
只是一点背景(虽然我相信你已经知道了)和解释:
ETags比过期更可靠,因为尊重expire指令的浏览器在给定的生命周期内不会更改图像/文件,无论是否有任何更改。但是,ETag可以配置为指示浏览器何时更改图像。
在上面提供的代码 FileETag MTime Size 将有浏览器更新图像,css,js和xml文件(?i:是做一个不区分大小写的匹配)如果有任何更改大小或修改时间。最好的部分:它取代了过期指令!
此外,由于内容的动态特性,上面的代码将禁用php文件的ETag。
我包含了图片的expires指令,因为在我写这篇文章的时候,许多速度检查器和验证器会因为没有它们而对你进行排名,即使设置了ETag也是如此。