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.
Cache-Control: public, max-age=604800, immutable
我是 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. Ifmax-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 tomax-stale
, then the client is willing to accept a stale response of any age.
Cache-Control: public, max-age=604800, immutable