考虑一下最小的例子:使用php,我有一个输入文本的表单,它会生成文本的图像。然后,当我更改文本并更新时,我看不到新的图像,因为我假设它被缓存了。当我更新它的时候,有什么方法可以自动从缓存中删除这个图像文件吗?
发布于 2013-01-07 22:04:34
这通常是通过向查询添加随机字符串或时间戳来处理的。
即<img src="/images/image.jpg?timestamp=1357571065" />
发布于 2013-01-07 22:08:31
典型的解决方案是ceejazoz在这个答案中给出的:添加一个额外的时间戳作为请求参数。这样一来,每次的url都是不同的,所以不需要缓存或代理来传递缓存的版本。
然而,尽管这是可行的,但它是一个丑陋的变通方法。
干净的解决方案是在传递图像时指定头部。这些头文件会注意图像不会被缓存。这就是头的作用:定义资源的使用方式。缺点:用于传送静态图像的今天的http服务器的开箱即用配置不提供指定这样的头。因为在99,99%的情况下,这是没有意义的。因此,您必须编写自己的机制。并不是真的很难,但还是很努力。使用上面的变通方法当然更容易,麻烦也更少。
准确地回答你的实际问题:从单个缓存对象中清除缓存通常是不可能的。尽管这实际上取决于你所说的缓存。如果你正在开发(测试)的时候只是浏览器缓存,那么只需要进行一次“深度重新加载”(类似于CTRL-SHIFT-R或CTRL-F5,取决于你的浏览器)。但这会清除当前页面的所有缓存对象。没有简单的方法来清除服务器端缓存,甚至是中间的代理。
发布于 2013-01-07 22:06:08
向图像添加一个查询字符串,可能包含儒略时间+一个随机数,例如,您的图像URL将变为: //.../myimage.jpg?112233445566-954967254
https://stackoverflow.com/questions/14197493
复制相似问题