用php/js-can'在IE中加载动态报价;似乎没有覆盖缓存
Loading dynamic quote in IE with php/js - can't seem to override the cache
我已经设置了一个基本脚本,它将随机引用加载到网页中,从php文件中的列表中提取引用。它在Firefox和Safari中运行良好,但在Internet Explorer中,用户总是看到相同的报价,刷新页面不会更改报价。
我已经将其缩小到IE中的缓存问题,因为当我进入IE 9中的F12 Developer工具并将缓存设置为始终从服务器刷新时,问题就消失了。然而,我希望网站的访问者看到一个不断变化的报价。
我尝试将此添加到页头,但没有成功:
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
我还看到了这个问题:如何阻止js文件缓存在IE中?我在保存脚本的.js文件中添加了一个时间戳,但这并没有改变任何内容。
我可能还缺少什么?js文件非常简单:
$j(document).ready(function() {
$j("#quoteContainer").load("/quote_generator.php", "quote=emotion");
});
报价生成器经过简化,获得报价的类型(在本例中为情感)并显示它:
$quotes[] = 'emotion quote.';
$quotes[] = 'emotion quote2.';
$random_number = rand(0,count($quotes)-1);
echo $quotes[$random_number];
它是否也可能缓存PHP文件或其输出?当然,当我调整php文件时,直到我清除IE缓存,更改才会显示出来?
也许给它一个nonce:
$j(document).ready(function() {
$j("#quoteContainer").load("/quote_generator.php", {quote: "emotion", nonce: new Date().getTime()});
});
(时间戳不是世界上最好的nonce,但它是一个简单的例子。)您的服务器代码会忽略该参数,但它会使URL在浏览器缓存中看起来是唯一的。
编辑—对不起,我已经有一段时间没有使用.load()
了;如果您想坚持使用HTTP"GET"请求,您必须将args作为字符串提供(imo,这有点像jQuery方面有问题的API设计,但无论如何):
$j(document).ready(function() {
$j("#quoteContainer").load("/quote_generator.php", "quote=emotion&nonce=" + new Date().getTime());
});
相关文章:
- 在循环中分配json值时,值被覆盖
- 谷歌地图固定位置覆盖
- 只覆盖箭头键滚动事件
- 如何在从浏览缓存加载页面时执行javascript
- JQuery覆盖不更改单选选项
- 如何覆盖锚点元素's href目标,并在我点击转到目标javascript时删除其他错误
- ReactJS和SpringDataRest缓存问题可能与websocket有关
- 缓存谷歌地图数据
- 将添加一个相同类型的事件附加或覆盖以前添加的具有相同名称的事件
- 传单中如何在更改基层时启用/禁用覆盖层
- 防止jQuery Mobile中的ajax缓存
- 点击(右键点击)使用传单地图库获取图像覆盖的像素坐标
- HTML/CSS-用于拖放的全页面覆盖
- 让javascript知道epub3电子书中何时播放媒体覆盖
- 覆盖函数中的函数
- 无法覆盖CSS伪元素:before
- image.onload事件和浏览器缓存
- 使用JavaScript覆盖客户端的缓存控制标头
- 用php/js-can'在IE中加载动态报价;似乎没有覆盖缓存
- 如何清除缓存的geojson覆盖时使用$.在L.control.layers. getJSON