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。