如何判断XMLHTTPRequest是否命中浏览器缓存 [英] How to tell if an XMLHTTPRequest hit the browser cache

查看:327
本文介绍了如何判断XMLHTTPRequest是否命中浏览器缓存的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如果可以告诉(在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆