如何从客户的 PC 中清除缓存的网站? [复制]
Posted
技术标签:
【中文标题】如何从客户的 PC 中清除缓存的网站? [复制]【英文标题】:How do I clear a cached website from clients' PCs? [duplicate] 【发布时间】:2016-01-11 11:33:56 【问题描述】:我的问题如下: 我为去年的一个活动建立了一个网站(2014 年版)。 现在我为同一个活动创建了一个网站,但今年(2015 年)。 但是,每当我访问该网站时,它都会打开 2014 版,即使我已经安装了另一个版本... 按 F5 刷新页面并显示 2015 站点。
所以我认为问题在于这个网页是一个缓存版本,这就是发生这种情况的原因。 这是我的问题: 有什么办法可以解决这个问题吗? (正在考虑使用 javascript 脚本清除每个访问者对本网站的缓存...)
P.S.:该网站在 2015 年使用 html5、CSS3、JavaScript。在 2014 版本中使用 HTML4 和 CSS2-3(不再是 idk)。
【问题讨论】:
您可以在.css
和 .js
文件调用的末尾附加 ?v=2015
之类的内容,以便浏览器重新加载它们并且不会缓存旧版本。
不幸的是,这个问题对 SO 来说太宽泛了,有太多方法可以做到这一点。 @Albzi 主页呢?
没关系。过了一会儿我明白了。我想我的大脑瞬间崩溃了。 @JuanMendes
【参考方案1】:
对 css 和 javascript 执行此操作
<link rel="stylesheet" type="text/css" href="yourlink/filename.css?v=2"/>
<script src="yourlink/filename.js?v=2"></script>
【讨论】:
如果主页本身被缓存,这将不起作用。 太有帮助了,谢谢【参考方案2】:这里有一个不错的缓存控制教程:http://www.mobify.com/blog/beginners-guide-to-http-cache-headers/
但是,如果您没有在 2014 版中应用这些技巧,我想没有好的方法可以使用户浏览器中已经缓存的 2014 版过期。或许您现在能做的最好的事情就是将 2015 版放在不同的 URL 上。
【讨论】:
【参考方案3】:您无法通过客户端或服务器端代码清除“传统”浏览器缓存,至少不能以跨浏览器兼容的方式。您可以通过发送适当的标头或使用这些元标记来告诉浏览器不要缓存您的页面:
<meta http-equiv='cache-control' content='no-cache'>
<meta http-equiv='expires' content='0'>
<meta http-equiv='pragma' content='no-cache'>
或者,您可以对所有资源进行版本控制,例如img-2015.png 与 img-2014.png
【讨论】:
【参考方案4】:如果浏览器没有计算过去的过期日期,它可能会尝试使用 HEAD 方法的 http 请求。此方法应返回与 GET 相同的元数据。因此,您可以通过在 HEAD 请求上设置正确的 http 缓存标头来触发刷新 GET 请求。这应该会强制浏览器将其缓存版本识别为过时并使用 GET 检索数据。
【讨论】:
【参考方案5】:一种选择是,您可以在服务器上给文件一个不同的位置并进行服务器端重定向。
【讨论】:
以上是关于如何从客户的 PC 中清除缓存的网站? [复制]的主要内容,如果未能解决你的问题,请参考以下文章