Tôi muốn lưu vào bộ nhớ cache trong broswer để broswer không cần truy vấn máy chủ sau vài phút. Tôi đã thêm tiêu đề bộ nhớ cache php nhưng có vẻ như nó không hoạt động. Đây là mã ajax của tôi và mã php: mã Ajax: MãAjax không thể lưu vào bộ nhớ cache
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.')';
Cám ơn MitchS và giúp đỡ lenzai 's. Vấn đề này được giải quyết. Bộ nhớ cache : true nên được đặt trước khi bất kỳ truy vấn ajax và thư viện jquery cũ nào không hỗ trợ bộ nhớ đệm. Vì vậy, chắc chắn rằng bạn đang sử dụng jquery thư viện mới nhất
Đối với những người muốn có một ví dụ làm việc: Mã
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);
});
}
mã 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.')';
thời hạn sử dụng của bạn là quá khứ –