XMLHttpRequest:如何强制缓存?

XMLHttpRequest: How to force caching?

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

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

xhr.setRequestHeader("Cache-Control", "no-cache");

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

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

一个使用Cache-Control的例子:

Cache-Control: max-age=3600

本文 Caching Tutorial for Web Authors and Webmasters 更深入地介绍了它们。

您可以在 请求 Cache-Control header 中指定 max-stale 而无需参数。来自 RFC 7234:

The max-stale request directive indicates that the client is willing to accept a response that has exceeded its freshness lifetime. If max-stale is assigned a value, then the client is willing to accept a response that has exceeded its freshness lifetime by no more than the specified number of seconds. If no value is assigned to max-stale, then the client is willing to accept a stale response of any age.

请检查Caching static assets

Cache-Control: public, max-age=604800, immutable