我对脚本和编码很陌生。我现在对加快我的网站速度感兴趣。为此,我想开始利用浏览器缓存。
我已经阅读了几件事,但我现在正在努力做出正确的决定。
据我了解,有三种选择:
-到期-最大年龄-Etag(使用最大年龄时)
在我看来,前两个不适合电子商务网站(opencart btw)。但据我了解,它们比 Etag 更容易实现。
我在我的测试环境中获得了过期和最大年龄,但随后我遇到了网页过时的客户端渲染问题。
所以总而言之,我想去 Etag,但我不知道从哪里开始!有没有人(也许也有opencart经验?)可以帮助我上路?
提前感谢!
问候
乔治
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>
只是一点背景(虽然我相信你已经知道)和解释:
ETag 比 expires 更可靠,因为遵循 expire 指令的浏览器不会在给定的生命周期内更改图像/文件,无论是否有任何更改。但是,可以将 ETag 配置为指示浏览器何时更改图像。
在上面提供的代码中,FileETag MTime Size将让浏览器更新图像,css,js和xml文件(?i:是做一个不区分大小写的匹配),如果大小或修改时间有任何变化。最好的部分是:它取代了过期指令!
此外,由于内容的动态性质,上面的代码将禁用 php 文件的 ETag。
我包含了图像的 expires 指令,因为在我写这篇文章的时候,许多速度检查器和验证器会因为你没有它们而排名有点低,即使设置了 ETag。