如何判断XMLHTTPRequest是否命中浏览器缓存 [英] How to tell if an XMLHTTPRequest hit the browser cache
问题描述
如果可以告诉(在javascript执行中)GET XMLHTTPRequest是否命中浏览器缓存而不是从服务器获取响应?
If it possible to tell (within javascript execution) if a GET XMLHTTPRequest hit the browser cache instead of getting its response from the server?
推荐答案
来自 XMLHttpRequest规范:
对于由于用户代理
生成的条件请求而导致的304 Not Modified响应,用户代理必须表现为服务器
给出具有适当内容的200 OK响应。
For 304 Not Modified responses that are a result of a user agent generated conditional request the user agent must act as if the server gave a 200 OK response with the appropriate content.
换句话说,浏览器总是会给状态代码200 OK,即使对于触及浏览器缓存的请求也是如此。
In other words, the browser will always give status code 200 OK, even for requests that hit the browser cache.
但是,规范还说:
用户代理必须允许作者请求标头覆盖自动缓存
验证(例如,If-None-Match或If-Modified-Since),在这种情况下,
304 Not Modified响应必须通过。
The user agent must allow author request headers to override automatic cache validation (e.g. If-None-Match or If-Modified-Since), in which case 304 Not Modified responses must be passed through.
因此,有一种解决方法可以使您的JavaScript代码看到304 Not Modified响应。
So, there is a workaround to make the 304 Not Modified responses visible to your JavaScript code.
这篇关于如何判断XMLHTTPRequest是否命中浏览器缓存的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!