我以两种不同的方式提供图像:
>例如,将PHP脚本用于个人资料图片
>通过直接指向它们,例如图标和背景
我正在适当地处理它们的缓存,对此我是全新的.
对于PHP脚本,我只是向响应中添加一个Last-Modified头,并且如果文件未更改(使用filemtime()),则如果再次调用它,则会提供304状态代码.
对于直接访问,我使用的是HTACCESS,但是到目前为止,我看到的每个规则都不允许我执行与PHP脚本中相同的操作(检查文件是否已更改,然后提供304或文件本身).
这是我计划使用的HTACCESS规则:
Header unset Pragma
FileETag None
Header unset ETag
# cache images/pdf docs for 10 days
<FilesMatch "\.(ico|pdf|jpg|jpeg|png|gif)$">
Header set Cache-Control "max-age=864000, public, must-revalidate"
Header unset Last-Modified
</FilesMatch>
据我了解,更新缓存图像的唯一方法是重命名它.有人知道解决方法吗?例如,通过检查图像的最后修改日期?
解决方法:
您可以使用mod_expires(如果有):
<FilesMatch "\.(ico|pdf|jpg|jpeg|png|gif)$">
ExpiresDefault "modification plus 10 days"
</FilesMatch>