正在Javascript Vanilla中缓存GET响应
Caching GET response in Javascript Vanilla
我注意到Firefox不会自动缓存GET请求。遵循我使用的代码:
var ajax = new XMLHttpRequest();
ajax.open("GET","page.php?val=" + val,true);
ajax.send();
使用jquery可以给出cache: true;
,我如何使用Vanilla Javascript(客户端)在缓存中保存?也可以决定多长时间?你能给我一个代码的例子吗?提前谢谢!
Web缓存在很大程度上由服务器发送的头文件控制(Expires:etc.)。浏览器有时会"欺骗"并且不会真正缓存,即使头文件允许他们。。。可能是因为用户使用他们的UI关闭了缓存,例如将缓存大小设置为零。但是,那些"欺骗"另一个方向的浏览器,即使头文件不允许,也会进行缓存,这种情况(有充分的理由)极为罕见。
如果缓存不适合您,它是文件和服务器(或者可能是浏览器配置)的函数,而不是任何浏览器类型或版本的函数。(换言之,如果服务器发送了所需的标头,Firefox的缓存会很好。)标头由不同的服务器和不同的提供商以多种方式控制。对于Apache服务器,细节可能在".htaccess"文件中,通常可以使用预先编写的模板。
首先,使用HTML4,无论你使用什么工具,无论你的程序做什么,你都无法从客户端控制网络缓存。HTML5中新的"在线应用程序缓存"或"appcache"提供了一个通用异常。。。但也有其他限制,例如关于"每个站点一个"answers"同源"的限制。
您可以使用一个简单的散列来缓存响应,比如:
var cache = {};
function getData(variable) {
if (cache[variable]) {
return cache[variable];
}
// previous ajax code to get the data...
// in the response handler, do:
cache[variable] = data;
}
这是缓存机制的一个天真实现:只在页面的生存期内工作(即,直到页面被刷新或导航离开),没有任何过期机制,我相信还有其他缺点。例如,您可以使用localStorage
来解决刷新问题。
但是,嘿,我写这篇文章没有报酬:)。
- 响应应包含一个对象,但得到的却是GET操作的数组
- 从javaspring方法管理http.get响应
- AngularJS HTTP Get 没有得到响应
- 如何在ExpressJS和LomotiveJS上保存对变量的GET响应
- Node/Angular中的$http GET请求收到了奇怪的响应
- 将 http GET 响应与 ngRepeat 中的隔离作用域绑定
- 在猫鼬查询返回集合之前,应用程序应该如何处理 http get 响应
- 如何使用环回对 GET 响应进行排序
- 如何在 AngularJS 中获取 GET 响应的网址
- Angular2:从http.get响应中提取数组元素
- 将 GET 响应传递给 POST
- YQL ODT-REST GET响应存在,但无法访问
- 可以'在GET响应中没有看到JSON字段(mongoose)
- 正在Javascript Vanilla中缓存GET响应
- 是否可以将GET响应数据传递回同一工厂
- GET响应不能与jQuery一起工作
- 如何缓存JQUERY GET响应(数据)并在另一个函数中使用它
- 从jquery GET响应中获取值
- 如何在PhantomJS中保存XML GET响应到文件
- 使用 JQuery 从 GET 响应中获取相关信息