我实现了一个系统来编辑网站上显示的图像。
编辑图像时,我想在站点的所有页面(调用它的位置)上显示其最新版本,至少对于编辑图像的用户而言。
现在我正在寻找一种更好的方法来清除特定图像的缓存,而不是在末尾添加时间戳:
<img src="myimage.jpg?01215654" alt="" />
为什么 ?
它假设总是在图像路径的末尾添加时间戳,例如会话系统。
但是当会话过期时(例如,用户离开站点,几个小时后返回),图像的真实路径就会显示出来:
<img src="myimage.jpg" alt="" />
并且导航器随机显示旧图像,或最后一个版本...因为 Apache 缓存:
- myimage.jpg 作为旧图像
- myimage.jpg?01215654 作为新版本,因为之前没有人点击它(作为新媒体加载)
限制
- 我无法更改已编辑图像的路径,例如“myimage.jpg”到“myimage-v2.jpg”,这可以解决问题...
- 图像不是从控制器提供的(不是从 PHP 脚本提供的),它们是从服务器上的路径直接加载的。
- 我不想使用在带有 JS 的图像路径末尾添加时间戳或版本字符串的会话系统。
我想要的是
我想说“myimage.jpg”的缓存已经过期,所以显示上一个版本,然后正常缓存,直到下一个版本。所以我想在编辑后加载“200状态”的图像,而不是“304修改”。
注意:编辑图像时,如果您现在可以更改缓存标头,我会在隐藏的 div 中使用 JS (JQuery) 重新加载它?
所以我想要的是清除被编辑的特定图像的缓存头,考虑到我的项目的限制,所以如果可能的话通过使用缓存指令而不从控制器提供图像,这可能吗?