由于某种原因,Ajax缓存无法正常工作

时间:2014-12-14 01:39:25

标签: php jquery ajax caching

我在理解为什么以及如何缓存我的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中的更新时间,让我相信缓存仍然无效,但不明白为什么

如何将页面缓存一小时?

1 个答案:

答案 0 :(得分:1)

我认为你误解了缓存变量的工作原理。缓存的默认值为true,因此您甚至不必设置它。它实际上并不会告诉您的浏览器或计算机或服务器缓存任何内容。变量的主要目的是能够将其设置为false,因此它会强制浏览器通过向GET参数添加"_={timestamp}"来缓存页面。

进一步说明:http://api.jquery.com/jquery.ajax/

将值保持为true只表示响应的行为与任何其他页面一样。