XMLHttpRequest:如何强制缓存?

use*_*654 8 javascript ajax caching xmlhttprequest

我对 XMLHttpRequests 比较陌生,因为我以前使用过 jQuery 的 AjAX 方法。但是我需要在网络工作者中工作,现在我必须使用经典的 XMLHttpRequest 来解决性能问题。

我正在尝试cache从 jquery重建-property。如果缓存应该被禁用,我添加这个:

xhr.setRequestHeader("Cache-Control", "no-cache");
Run Code Online (Sandbox Code Playgroud)

但是如果我想强制缓存(而不是阻止),我应该设置什么标头?

Que*_*tin 5

您可以设置多种标头来鼓励缓存,但它们(包括Cache-Control您使用不正确的标头)是必须由服务器发送的响应标头,而不是请求标头。

使用 Cache-Control 的示例之一:

Cache-Control: max-age=3600
Run Code Online (Sandbox Code Playgroud)

这个面向 Web 作者和网站管理员的缓存教程更深入地介绍了它们。

  • `Cache-Control` *可以*用作请求头,它支持 `no-cache`,如 [RFC 7234](https://tools.ietf.org/html/rfc7234#section-5.2. 1)。 (8认同)

Fra*_* Yu 5

您可以max-stale请求的Cache-Control标头中不带参数地指定。来自RFC 7234

max-stale请求指令表明该客户愿意接受已超过其使用寿命新鲜的响应。如果max-stale分配了一个值,则客户端愿意接受超过其新鲜度生命周期不超过指定秒数的响应。如果没有为 分配值max-stale,则客户端愿意接受任何年龄的陈旧响应。