gpt4 book ai didi

php - Ajax 无法缓存

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:45:12 24 4
gpt4 key购买 nike

我想把数据缓存在broswer中,这样broswer就不用在几分钟内查询服务器了。我添加了 php 缓存 header ,但似乎不起作用。这是我的ajax代码和php代码: Ajax 代码:

function myAjax(name, callback) {
var url = './php/getJson.php?name=' + encodeURIComponent(name) + '&callback=?';
jQuery.getJSON(url, function(data) {
callback(data);
jQuery.ajaxSetup({ cache: true });
});
}

PHP代码:

$seconds_to_cache = 3600;
$ts = gmdate("D, d M Y H:i:s", time() + $seconds_to_cache) . " GMT";
$lm = gmdate("D, d M Y H:i:s", time() - $seconds_to_cache/2) . " GMT";
header("Last-Modified: $lm");
header("Expires: $ts");
header("Pragma: cache");
header("Cache-Control: public, max-age=$seconds_to_cache");

include_once('getData.php');

$output = $_GET['name'];

echo $_GET['callback'].'('.$output.')';

感谢 MitchSlenzai 的帮助。这个问题解决了。 cache:true 选项应该在任何 ajax 查询之前设置,旧的 jquery 库不支持缓存。因此,确保您使用的是最新的 jquery 库

对于想要一个工作示例的人:

Ajax 代码:

var callback = function(data) {
alert("callback");
}
function myAjax(name) {
var url = './php/getJson.php?name=' + encodeURIComponent(name) + '&callback=?';

jQuery.ajaxSetup({ cache: true });
jQuery.getJSON(url, function(data) {
callback(data);
});
}

PHP代码:

$seconds_to_cache = 3600;
$ts = gmdate("D, d M Y H:i:s", time() + $seconds_to_cache) . " GMT";
$lm = gmdate("D, d M Y H:i:s", time() - $seconds_to_cache/2) . " GMT";
header("Last-Modified: $lm");
header("Expires: $ts");
header("Pragma: cache");
header("Cache-Control: public, max-age=$seconds_to_cache");

$output = '{"eventList":["event1","test event"]}';

echo $_GET['callback'].'('.$output.')';

最佳答案

您将 Last-Modified header 设置为一个小时前,并将 max-age 设置为一个小时。

这意味着在您发送此数据时,它已经达到缓存允许的最大期限,必须重新发送任何后续请求。

关于php - Ajax 无法缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13246901/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com