当发布新图像时,确保图像不会在客户端浏览器中兑现的最佳方法是啥?
Posted
技术标签:
【中文标题】当发布新图像时,确保图像不会在客户端浏览器中兑现的最佳方法是啥?【英文标题】:what is the best way to ensure images are not cahsed in client browsers when a new image is released?当发布新图像时,确保图像不会在客户端浏览器中兑现的最佳方法是什么? 【发布时间】:2014-11-11 08:23:17 【问题描述】:我们多次收到客户的问题,即使用最新版本发布到生产网站的新图像没有出现在他们的浏览器中。最好的解决方案是什么?
-
图片文件夹的IIS内容在发布后过期我可以做。
问题是我必须打开它几天,直到 99% 的用户访问了该网站。
META 标签、HttpCacheability.NoCache 等将不起作用,因为这些是图像。
对于 JS 和 CSS 或网站图标,很容易以编程方式在链接末尾添加版本。但是对于图像该怎么办?链接也可以来自 CSS。
所以我能想到的唯一选择是每次更改图像名称:(
或者添加一个包含站点中所有图像链接的字符串,在签入时应将其替换为(使用脚本)发行版本号。
还有其他选择吗?
【问题讨论】:
【参考方案1】:1- 标头
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="0" />
但有时,浏览器会忽略它们。
2-url参数
<img src="myimage.jpg?1243"/>
您可以通过 html 或脚本服务器端上的 javascript 执行此操作。
3-.htaccess
以编程方式将序列添加到源文件名中:
filename[.serial].ext
然后在您的服务器上添加一个 .htaccess,而不是修剪那个序列
<IfModule mod_rewrite.c>
RewriteCond %REQUEST_FILENAME !-f
RewriteCond %REQUEST_FILENAME !-d
RewriteRule ^(.+)\.(\d+)\.(js|css|png|jpg|gif)$ $1.$3 [L]
</IfModule>
【讨论】:
感谢您的建议 1. 元标签 >> 只能在页面中添加,不会影响图片。 2.在jquery中,如果我尝试,将加载已经旧的图像,加载后更改它是不正确的。2次加载和闪烁可能会发生! 3.我正在检查第三个解决方案 1- 元标记 >>> 这些是“缓存策略标头控件”,正在影响浏览器处理 GLOBAL 页面缓存的方式,包括资源!但是某些浏览器出于某种原因将它们视为指示性,而不是指令 2-它可以工作,一直在做。 3- 繁重的工作,但有效。以上是关于当发布新图像时,确保图像不会在客户端浏览器中兑现的最佳方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章