为什么页面仍然缓存没有缓存的头已被送往即使经过?(Why is the page still cac

2019-09-21 22:31发布

我做这个一吨的研究,并问了很多人的帮助,仍然没有成功。 下面是详细信息...

我参与开发一个网站,从各种数据文件中提取数据,将其合并成一个临时.csv文件,然后使用流行的图形库作图:dygraphs。 该网站的大部分是用PHP编写的。 即确定作图存储在用户会话中的数据参数,该.csv的用户会话命名,并提供下载,然后将.csv文件是写在其传递到dygraphs对象的脚本。 而我们发现,即使是没有缓存的头发送:

header("Cache-Control: no-cache, must-revalidate");  
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");

在会话过程中许多用户的体验,(如果产生足够不同的图)显示页面的较旧的,静态渲染(数据他们在稍早图表)页面,就好像它被缓存,而是装载得到一个的新的要求。 它只是变得怪异,但:

我已经在Firefox和Chrome浏览器使用的开发工具检查和两种浏览器都接受无缓存头就好了; 即使如果您查看网页的源文件出现问题,来源是正确的内容(表/传说也动态地使用PHP创建,源显示正确的表,但什么是呈现较旧的内容); 在网页开始正确地呈现,直到图形即将被显示,然后显示了旧的内容; 旧的内容显示出来,就像它是一个完全静态重叠 - 缓存的图形不具有相同的动态特性(翻转数据点显示,缩放和平移等),这是因为如果正确的页面是它下面的地方(CSV文件移动的下载按钮取决于表有多大。年龄越大,静态页面什么也不做,如果你点击下载按钮的.csv,但如果你能设法找到了一个在它下面的页面,您可以点击仍然下载.csv格式。在.csv的数据是正确的)

这是我在看到发展迄今为止最奇怪的事情之一。 其他一些相关的事实是,当我在使用Chrome的所有问题我个人的经验发生。 这些症状的非已报告了Firefox用户。 IE用户有(IE用户被迫使用镀铬边框)同样的问题。

我在这一点上我束手无策。 我们发送的PHP头; 我们已经尝试设置IIS上的“DisableCache”(或其他)为PHP缓存配置文件; 我们试图发送一个随机的查询字符串的搜索结果页。 我们已经尝试了所有适当的meta标签 - 所有没有成功。

Answer 1:

只要你的服务器忽略URL参数,您可以通过获取“url.csv?(随机数)”,而不是“url.csv”绕过任何浏览器缓存。



Answer 2:

你试试“的Last-Modified”和“ETag的”? 只有观看有关图形的HTTP标头。



文章来源: Why is the page still caching even after the no-cache headers have been sent?