我看到很多关于强制缓存重新加载的答案,推荐了一个包含 HTML 页面本身的解决方案。
但是,当您的旧网站被编写为index.html
主页时,现在您将其替换为新内容,您如何确保回访者看到新内容?
旧网站曾经index.html
作为索引页面(在nginx
's 配置中),我现在已更改为index.php
. 但是每当我从以前访问过它的浏览器访问它时,它仍然会打开缓存的旧index.html
页面。新的浏览器将index.php
正确加载。
我发现的一个看似正确的答案是告诉为该部分nginx
设置,这将强制缓存无效;但由于某种原因,这不起作用。expires -1;
server {}
当然,需要发生的是访问者将始终获得新页面,而无需自己明确发出刷新。
据推测,解决方案应该是通过标头使缓存无效。但是怎么做?
编辑以解决所有建议的评论和答案
- 就像我在回答的第一段中所说的那样,这个问题不是通过编辑索引文件来解决的(比如为“缓存清除”添加参数),因为索引文件本身已经被缓存了,这就是问题所在。
- 我的问题中没有提到 javascript 或 CSS 文件。同样,它是
index.html
已缓存的文件。 - 存在
index.html
并index.php
不会产生冲突。index.html
整个系统工作正常,只有在服务器配置中设置为索引页面时,之前访问过该页面的老访问者,index.html
即使在索引更改为index.php
. 这也很容易证明,即使在index.html
文件被完全删除后,这个问题仍然存在。因为一旦浏览器缓存了一个 HTML 文件,它就不再向服务器询问索引文件是什么,它只是显示它缓存的内容。
所以完整的场景是这样的:
- 该网站已
index.html
在服务器配置中设置为索引页面 - 浏览器访问网站
- 浏览器缓存主页
- 服务器配置中的索引页面更改为
index.php
- 同一个浏览器访问网站
index.html
浏览器显示从以前缓存
在数字 5. 中,如果我用新的浏览器访问该网站,它将显示位于 中的新主页的内容index.php
。所以问题是,我如何让旧浏览器忘记它缓存的内容,并加载新的主页?