Javascript 什么';在客户端使用js缓存数据的最佳方式是什么?
我的应用程序使用API从另一台服务器接收数据,请求数量有限。数据很少更改,但即使在刷新页面后也可能是必需的Javascript 什么';在客户端使用js缓存数据的最佳方式是什么?,javascript,html,cookies,web-storage,Javascript,Html,Cookies,Web Storage,我的应用程序使用API从另一台服务器接收数据,请求数量有限。数据很少更改,但即使在刷新页面后也可能是必需的 使用cookie或HTML5解决这个问题的最佳方法是什么 网络存储 可能还有其他方法来解决这个问题吗 尽管跨浏览器兼容性很重要,cookie是唯一的选择,而不是web存储 但问题实际上取决于您缓存的数据类型 对于您正在尝试的内容,可能根本不需要cookie和web存储 Cookie用于存储与配置相关的信息,而不是实际数据本身 Web存储支持持久数据存储,与Cookie类似,但容量大大增强
尽管跨浏览器兼容性很重要,
cookie
是唯一的选择,而不是web存储
但问题实际上取决于您缓存的数据类型
对于您正在尝试的内容,可能根本不需要cookie和web存储
- Cookie用于存储与配置相关的信息,而不是实际数据本身
- Web存储支持持久数据存储,与Cookie类似,但容量大大增强,HTTP请求头中不存储任何信息李>
[1] :我写这个库是为了解决同样的问题: 这里有一些基本用法
//只需使用数组作为键添加新缓存
set({blogId:1,类型:'view'},'blog1');
cacheJS.set({blogId:1,类型:'json'},jsonData);
//使用密钥删除缓存
removeByKey({blogId:1,类型:'json'});
//使用ttl和上下文键添加缓存
cacheJS.set({blogId:2,type:'view'},'Blog 2',3600,{author:'hoangnd'});
cacheJS.set({blogId:3,type:'view'},'blog3',3600,{author:'hoangnd'});
//使用con文本密钥删除缓存
//博客2和博客3的缓存将被删除
removeByContext({author:'hoangnd'})
下面是一个从JQuery AJAX缓存数据的示例。所以,如果你只想在你还没有数据的时候打电话,那真的很简单。只需这样做(示例)。在这里,我们首先检查是否有装载信息(键入line、location和shipdate),只有在没有的情况下,我们才会调用AJAX并将数据放入缓存:
var dict = [];
function checkCachedLoadLine(line, location, shipDate, callback) {
var ret = 0;
if(!((line+location+shipDate) in dict)) {
productionLineService.getProductionLoadLine(line, location, shipDate, callback);
}
return dict[line+location+shipDate];
}
…然后在回调中将值写入缓存
function callback(data) {
if (!data) {
document.getElementById('htmlid').innerHTML = 'N/A';
} else {
document.getElementById('htmlid').innerHTML = data[0];
dict[data[2]+data[3]+data[4]] = data[0];
}
}
什么样的数据。。。嗯。例如,一些社交网络(fb、vk、谷歌+)中的用户活动数据。在服务器端缓存数据对我来说非常糟糕,因为这么多数据=)这个应用的跨浏览器兼容性不是主要任务,这个应用是为现代浏览器设计的。如果你能做到
if(localStorage)
?@JanDvorak,这是2012年与网络相关的答案:)如果某个男孩在这么多年后仍在阅读此内容,对于本地存储,此项目可能会有所帮助:
function callback(data) {
if (!data) {
document.getElementById('htmlid').innerHTML = 'N/A';
} else {
document.getElementById('htmlid').innerHTML = data[0];
dict[data[2]+data[3]+data[4]] = data[0];
}
}