如果无法更改引用该文件的URI (例如,无法添加时间戳param),是否有办法强制客户端缓存重新加载HTML文件?
以下是我的情况:
example.com/page.html,它调用script.jsexample.com/page.html (w/o插件更新)page.html已经改变了。我需要从用户缓存中清除旧的page.html,这样新的page.html才能加载。有什么想法吗?Htaccess?新旧page.html调用的PHP?
谢谢!
发布于 2012-01-20 06:15:26
如果页面已经被浏览器缓存,那么很难告诉它不要使用缓存的版本,因为在确定缓存的版本过时之前,它可能不会再检查一遍。您只需向所有用户发送一封蜗牛邮件,通知他们按ctrl+f5 :)
不过,浏览器至少可以尝试一个HEAD请求来检查修改后的时间戳,然后才能提供缓存的版本。在这种情况下,以下内容将帮助您解决问题。
浏览器使用HTTP标准标头从web服务器协商它们的内容。接下来,如果要告诉浏览器不要缓存文件,则必须发送适当的HTTP头。如果要在PHP中这样做,可以使用header函数向浏览器发送适当的headers:
header('Cache-Control: no-cache');
header('Pragma: no-cache');如果必须通过HTML完成,您可以在页面标题中执行以下操作:
<meta http-equiv="Expires" content="Tue, 01 Jan 1995 12:12:12 GMT">
<meta http-equiv="Pragma" content="no-cache">但是,您无法确定浏览器是否会满足您的请求,即它没有缓存页面。还有一些其他的东西,比如eTags和诸如此类的东西,但是坦白地说,如果页面已经被缓存了,我不认为这会对你有所帮助。
更新
来自响应可缓存性上的HTTP1.1规范
如果既没有缓存验证器,也没有与响应相关的显式过期时间,那么我们并不期望缓存它,但是某些缓存可能会违反此预期(例如,当几乎没有或没有可用的网络连接时)。
发布于 2013-02-22 04:08:42
也许可以使用PHP为javascript调用添加时间戳。然后,您可以对duration...........For示例运行以下命令:
check_if_cache_should_be_disabled.php
page.php
发布于 2015-05-02 21:54:16
您可以更改文件名,例如page_v2.html,这将使浏览器将页面加载为新页。
https://stackoverflow.com/questions/8937447
复制相似问题