这是XMLHttpRequest:
$.ajax({
method: "get",
url: "getPage.php",
data: $data,
dataType: 'json',
timeout: 2000,
success: function(result) {
handleContent(result);
}
});
这是getPage.php?data = data
header("Expires: " . gmdate("D, d M Y H:i:s", time() + $offset) . " GMT");
header("Cache-Control: max-age=" . $offset . ", public");
header("HTTP/1.1 301 Moved Permanently");
header("Location: $location);
这是$ location:
header("Expires: " . gmdate("D, d M Y H:i:s", time() + $offset) . " GMT");
header("Cache-Control: max-age=" . $offset . ", public");
print $print;
客户端浏览器正确缓存$ location。但是它不会在getPage.php?data = data
中缓存重定向每次调用ajax-request时,它都会请求GET getPage.php?data = data。
我希望它能自动获取GET $ location(或者更确切地说尝试GET $ location并从缓存中获取页面)。
这不是301 Permanent Redirect的用途吗?创建一个由浏览器缓存的重定向(当然还有一些代理,搜索引擎等)?
请不要质疑为什么我选择这样做。我有理由这样做,我不打算进入这里。我想要的只是一个答案,可能是一个解决方案,它允许301重定向被缓存,在第一次请求后根本没有GET请求。
提前致谢!
答案 0 :(得分:6)
修改:大多数浏览器现在(2013年11月)执行缓存重定向,请参阅Browserscope(“缓存重定向”测试),但在问题被问到时它们没有
答案 1 :(得分:1)
这个帖子和它的评论包含了处理这个问题的方法,虽然提出的问题解决方案仍然有点“松懈”(主要是因为目前的浏览器实现):
How to manage a redirect request after a jQuery Ajax call
我希望你能找到它的信息。