Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

XMLHttpRequest: How to force caching?

I'm newer to XMLHttpRequests since I've previously used jQuery's AjAX method. However I need to work in a web worker and now I have to use the classic XMLHttpRequest for performance issues.

I'm trying to rebuild the cache-property from jquery. If cache should be disabled I add this:

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

But what header should I set if I want to force caching (not prevent)?

like image 958
user3631654 Avatar asked Jan 26 '15 16:01

user3631654


2 Answers

You can specify max-stale without an argument, in Cache-Control header of your request. From 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.

like image 131
Franklin Yu Avatar answered Oct 04 '22 01:10

Franklin Yu


There are a variety of headers you can set to encourage caching, but they (including Cache-Control which you are using incorrectly) are response headers that must be sent by the server and not request headers.

One such example of using Cache-Control:

Cache-Control: max-age=3600

This Caching Tutorial for Web Authors and Webmasters covers them in more depth.

like image 35
Quentin Avatar answered Oct 04 '22 01:10

Quentin