我在理解为什么以及如何缓存我的ajax请求时遇到了问题。
我已经在网上阅读了大约50-60篇不同的文章,说这应该有效。
$.ajax({
type: "GET",
cache: true,
url: 'get.php',
});
但是当我查看firebug或开发者网标签时。我一直看到正在加载200响应代码的页面,这意味着它正在加载一个新的新页面而不是旧的缓存。
因此,为了使测试更加基本,我添加了一个空白的单独页面,纯粹显示日期时间,因此我可以看到它是否被缓存。
它不起作用,日期时间仍在更新。
接下来我尝试在get.php上设置这样的标题:
$cache_length=600;
header('Expires: '.gmdate('D, d M Y H:i:s \G\M\T', time() + 3600));
header("Pragma: cache");
header("Cache-Control: max-age=$cache_length");
header("User-Cache-Control: max-age=$cache_length");
echo date('Y-m-d H:i:s');
仍然没有缓存它。
然后我尝试了这个:
$.ajax({
type: "GET",
cache: true,
url: 'get.php',
});
仍然存在同样的问题,没有发生缓存
然后我也尝试了这个,仍然没有缓存
$ .ajaxSetup({cache:true}); $就({ 输入:" GET", cache:true, url:' get.php', });
然后我尝试了这个,仍然没有缓存
$.ajaxSetup({ cache: true });
$.ajax({
type: "GET",
cache: true,
url: 'get.php',
});
所以我很困惑为什么它不会缓存它,当在线示例似乎通过指定cache:true来缓存它时非常简单。
无论我尝试什么,我仍然看到get.php中的更新时间,让我相信缓存仍然无效,但不明白为什么
如何将页面缓存一小时?
答案 0 :(得分:1)
我认为你误解了缓存变量的工作原理。缓存的默认值为true
,因此您甚至不必设置它。它实际上并不会告诉您的浏览器或计算机或服务器缓存任何内容。变量的主要目的是能够将其设置为false
,因此它会强制浏览器不通过向GET参数添加"_={timestamp}"
来缓存页面。
进一步说明:http://api.jquery.com/jquery.ajax/
将值保持为true只表示响应的行为与任何其他页面一样。