0

我对脚本和编码很陌生。我现在对加速我的网站产生了兴趣。为此,我想开始利用浏览器缓存。

我已经阅读了几件事,但我现在正在努力做出正确的决定。

据我了解,有以下三种选择:

-expires -max age -Etag(使用最大年龄时)

在我看来,前两个不适合电子商务网站(opencart btw)。但据我所知,它比 Etag 更容易实现。

我已经在我的测试环境中获得了过期和最大年龄,但是我遇到了我的网页过时的客户端渲染问题。

所以总而言之,我想去 Etag,但我不知道从哪里开始!有没有人(也许也有 opencart 经验?)可以帮助我上路?

提前致谢!

问候,

乔治

4

1 回答 1

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 比 expires 更可靠,因为遵循 expire 指令的浏览器不会在给定的生命周期内更改图像/文件,无论是否有任何更改。然而,ETags 可以配置为指示浏览器何时更改图像。

在上面提供的代码中,如果大小或修改时间有任何变化, FileETag MTime Size将使浏览器更新图像、css、js 和 xml 文件(?i: 是为了进行不区分大小写的匹配)。最好的部分:它取代了 expires 指令!

此外,由于内容的动态特性,上面的代码将禁用 php 文件的 ETags。

我包含了图像的 expires 指令,因为在我写这篇文章的时候,许多速度检查器和验证器会因为没有它们而对你进行一些排名,即使设置了 ETags。

于 2016-05-04T03:53:23.217 回答