Kyl*_*yle 18 php .htaccess uri cache-control
如果您无法更改引用该文件的URI(例如,无法添加时间戳参数),是否有办法强制客户端缓存重新加载HTML文件?
这是我的情况:
example.com/page.html哪些调用script.jsexample.com/page.html无法更改(无插件更新)page.html已经变了.我需要page.html从用户的缓存中清除旧的,以便新的page.html可以加载.有任何想法吗?htaccess的?旧的和新的page.html呼叫的PHP API ?
谢谢!
rdl*_*rey 31
好吧,如果页面已被浏览器缓存,则很难告诉它不要使用其缓存版本,因为它可能不会在确定其缓存版本过时之前再次检查.您只需向所有用户发送蜗牛邮件通知他们按ctrl + f5 :)
但是,浏览器有可能至少尝试使用HEAD请求来检查修改后的时间戳,然后才能提供其缓存版本.在这种情况下,以下内容将帮助您解决问题.
浏览器使用HTTP标准头从Web服务器协商其内容.如果您想告诉浏览器不要缓存文件,那么您必须发送相应的HTTP标头.如果要在PHP中执行此操作,可以使用该header函数将适当的HTTP标头发送到浏览器:
header('Cache-Control: no-cache');
header('Pragma: no-cache');
Run Code Online (Sandbox Code Playgroud)
如果必须通过HTML完成,您可以在页眉中执行以下操作:
<meta http-equiv="Expires" content="Tue, 01 Jan 1995 12:12:12 GMT">
<meta http-equiv="Pragma" content="no-cache">
Run Code Online (Sandbox Code Playgroud)
但是,您无法确定浏览器是否会遵守不缓存页面的请求.还有一些其他的东西,比如eTags和诸如此类的东西,但坦率地说,如果页面已被缓存,我认为这不会帮助你.
UPDATE
从响应可缓存性的HTTP/1.1规范:
如果既没有缓存验证器也没有与响应关联的显式过期时间,我们不希望它被缓存,但某些缓存可能违反此期望(例如,当很少或没有可用的网络连接时).
| 归档时间: |
|
| 查看次数: |
45399 次 |
| 最近记录: |