为什么即使在发送了无缓存标头之后,页面仍在缓存
Why is the page still caching even after the no-cache headers have been sent?
我对此做了大量研究,并向许多人寻求帮助,但仍然没有成功。以下是详细信息。。。
我参与了一个网站的开发,该网站从各种数据文件中提取数据,将它们组合在一个temp.csv文件中,然后使用一个流行的绘图库:dygraph进行绘图。该网站的大部分内容都是用PHP编写的。确定绘制图形的数据的参数存储在用户会话中,.csv以用户会话命名并可供下载,然后.csv文件被编写在一个脚本中,该脚本将其传递给dygraph对象。我们发现,即使并没有发送缓存标头:
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用户被迫使用chrome框架)。
在这一点上我已经无计可施了。我们已经发送了php标头;我们已经尝试将IIS上php的缓存配置文件设置为"DisableCache"(或其他);我们已经尝试向结果页面发送一个随机查询字符串;我们已经尝试了所有合适的元标签,但都没有成功。
只要您的服务器忽略URL参数,您就可以通过提取"URL.csv?(随机数)"而不是"URL.csv"来绕过任何浏览器缓存。
您尝试过"上次修改"answers"ETag"吗?并且只关注关于该图的HTTP标头。
- electronic BrowserWindow的最小高度和宽度在hide()show()方法之后不起作用
- 在chrome.tabs.onCreated之后加载HTML页面
- 在Jquery detachment()和appendTo()之后定位元素
- AngularJS:ng之后,重复$scope值未按预期更新
- 如何在从浏览缓存加载页面时执行javascript
- 为什么元素的宽度在页面加载之后和那一刻之后不同
- ReactJS和SpringDataRest缓存问题可能与websocket有关
- 缓存谷歌地图数据
- 没有在Angular应用程序中定义firebase(在firebase迁移之后)
- Javascript复选框函数:;缺少:在属性id之后"
- 在刚刚调用的append函数之后,jquery.height()不会返回实际值
- 防止jQuery Mobile中的ajax缓存
- image.onload事件和浏览器缓存
- 正在链接添加了以下内容::在之后
- Javascript清除缓存以清除基本身份验证凭据
- JQuery hide()在show()之后不起作用,反之亦然
- 使用jquery.load('pageName')方法时,未从应用程序缓存加载Html页
- 将脚本缓存到本地存储的basket.js概念仍然是一个好主意吗
- 阻止选项卡缓存jquery ui
- 为什么即使在发送了无缓存标头之后,页面仍在缓存