当前位置:  开发笔记 > 编程语言 > 正文

如何清除或替换缓存的图像

如何解决《如何清除或替换缓存的图像》经验,为你挑选了6个好方法。

我知道有很多方法可以防止图像缓存(例如通过META标签),以及一些很好的技巧来确保每个页面加载时显示当前版本的图像(例如image.jpg?x = timestamp ),有没有办法在浏览器缓存中实际清除或替换图像,以便上述两种方法都不是必需的?

例如,假设页面上有100个图像,这些图像被命名为"01.jpg","02.jpg","03.jpg"等.如果图像"42.jpg"被替换,则是有没有办法在缓存中替换它,以便"42.jpg"将在连续页面加载时自动显示新图像?我不能使用META标记方法,因为我需要永久性地将ISN"T替换为保持缓存,并且我不能使用timestamp方法,因为我不希望每次页面都重新加载所有图像负载.

我绞尽脑汁在互联网上寻找一种方法(最好是通过javascript),但没有运气.有什么建议?



1> Greg..:

If you're writing the page dynamically, you can add the last-modified timestamp to the URL:


怎么样`
2> Kornel..:

绝对无关紧要.实际上,您根本不应该尝试使用它来控制缓存(当任何内容读取文档的内容时,它已经被缓存).

在HTTP中,每个URL都是独立的.无论您对HTML文档执行什么操作,它都不适用于图像.

要控制缓存,您可以在每次内容更改时更改URL.如果您不时更新图像,请允许它们永久缓存并为新图像使用新文件名(带有版本,哈希或日期) - 这是长期文件的最佳解决方案.

如果您的图像经常变化(每隔几分钟,甚至每次请求),则发送Cache-control: no-cacheCache-control: max-age=xx其中xx是图像"新鲜"的秒数.

短期文件的随机URL是个坏主意.它会使用无用的文件污染缓存,并强制更快地清除有用的文件.

如果你有Apache和/ mod_headersmod_expires然后.htaccess用适当的规则创建文件.


   Header set Cache-control "no-cache"

以上将使*-nocache.jpg文件不可缓存.

您还可以通过PHP脚本提供图像(默认情况下它们具有可靠的可配置性;)



3> 小智..:

像这样添加图片网址

"image1.jpg?" + DateTime.Now.ToString("ddMMyyyyhhmmsstt");

只需在查询字符串中添加随机字符串即可

谢谢

Raju Jetla


这实际上并不刷新图像缓存.它只是诱使浏览器思考它的新形象.使用此方法,如果我检查chrome缓存,我可以看到12+相同的图像.在服务器上设置Cache-Control对我的响应是一个更好的解决方案,而不是黑客攻击.理想情况下,您确实希望浏览器缓存图像,只需在更改时刷新它.

4> Doin..:

相反的是一些其他的答案说,有IS用于客户端的方式JavaScript来替换缓存图像.诀窍是创建一个隐藏