我发现这很棘手,所以请耐心等待。
当我更新网站并且我要求客户端查看更改时,他们总是会看到上次缓存的结果。现在这不是问题,因为我可以让他们按ctrl f5刷新所有缓存。
我的问题是,有没有办法可以强制客户端浏览器自动刷新所有内容?这通常的标准是什么?我想仍然使用缓存,因为这会加速网站,只是能够在更新时告诉它。
我知道对于javascript文件和css文件,您可以更改文件的名称,以便浏览器将其视为新文件并重新下载,例如myCssFilev1.2.css但实际的HTML呢?
答案 0 :(得分:1)
有几个元标记可以做到这一点:
<meta http-equiv="cache-control" content="max-age=0" />
<meta http-equiv="cache-control" content="no-cache" />
<meta http-equiv="expires" content="0" />
<meta http-equiv="expires" content="Tue, 01 Jan 1980 1:00:00 GMT" />
<meta http-equiv="pragma" content="no-cache" />
缓存控制,过期和编译指示设置都可以在不同的浏览器中使用,因此最好包含所有这些设置。这应该可以解决你的问题。
修改强>
正如Ariel所说,你必须小心这一点。如果这是一个高负载情况,您可能想要找到另一种解决方案。您可以尝试找到“中间地带”,但调整参数(将expires或cache-control的max-age设置为某个值)。但是,如果您没有疯狂的服务器负载,那么这应该没问题。
答案 1 :(得分:0)
是。假设你有一个javascript include。
执行:
<SCRIPT src="file.js?<?=filemtime('file.js')?>"></SCRIPT>
这样做是将文件修改时间添加到文件的URL。因此,当您更改文件时,它将显示为新文件,并且不会被缓存。
请注意,常量filemtime
调用可能会降低速度。
您可以使用dirname()
__FILE__
和PHP_SELF
的组合来自动计算相对文件中的物理文件页面,然后将其放入函数中,这样您就没有了自己手动输入两次文件名。
答案 2 :(得分:0)
比它看起来更棘手。老实说,我认为指示用户清空浏览器的缓存是最简单的方法。如今,点击Ctrl+Shift+Del
速度很快,适用于大多数浏览器,包括Internet Explorer。
答案 3 :(得分:0)