为什么浏览器不在AJAX请求中缓存301?

Wil*_*lem 1 php apache http-headers

这是XMLHttpRequest:

$.ajax({
    method: "get",
    url: "getPage.php",
    data: $data,
    dataType: 'json',
    timeout: 2000,
    success: function(result) {
        handleContent(result);
        }
    });
Run Code Online (Sandbox Code Playgroud)

这是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);
Run Code Online (Sandbox Code Playgroud)

这是$ location:

header("Expires: " . gmdate("D, d M Y H:i:s", time() + $offset) . " GMT");
header("Cache-Control: max-age=" . $offset . ", public");
print $print;
Run Code Online (Sandbox Code Playgroud)

客户端浏览器正确缓存$ location.但是它不会在getPage.php?data = data中缓存重定向

每次调用ajax-request时,它都会请求GET getPage.php?data = data.

我希望它自动GET $ location(或者更确切地说尝试GET $ location并从缓存中获取页面).

这不是301 Permanent Redirect的用途吗?创建一个由浏览器缓存的重定向(当然还有一些代理,搜索引擎等)?

请不要质疑为什么我选择这样做.我有理由这样做,我不打算进入这里.我想要的只是一个答案,可能是一个解决方案,让301重定向得到缓存,在第一次请求后根本不会产生GET请求.

提前致谢!

mer*_*tor 6

编辑:大多数浏览器现在(2013年11月)执行缓存重定向,请参阅Browserscope("缓存重定向"测试),但在询问问题时它们没有.