繁体   English   中英

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

[英]Why does the browser not cache a 301 within an AJAX-request?

这是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请求时,它都会请求GET getPage.php?data = data。

我希望它改为自动获取$ location(或者尝试GET $ location并从缓存中获取页面)。

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

请不要怀疑我为什么选择这种方式。 我有这个理由,我不会在这里讨论。 我想要的只是一个答案,可能是一个解决方案,该方案可以缓存301重定向,从而在第一个请求之后根本没有GET请求。

提前致谢!

编辑 :现在(2013年11月),大多数浏览器都执行缓存重定向,请参阅Browserscope (“缓存重定向”测试),但在提出问题时却没有。

该线程及其注释包含解决此确切问题的方法,尽管为该问题提供的解决方案仍然有些“麻烦”(主要是由于当前浏览器的实现):

jQuery Ajax调用后如何管理重定向请求

希望您能从中获得启发。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM