作者热门文章
- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我正在为我工作的图书馆编写 Chrome 扩展程序。该扩展程序每次打开时都会从图书馆的 API 中获取最新的书名。
随着它被越来越多的人使用,它给发送 API 数据的图书馆服务器带来了巨大的负担。
在 Chrome 扩展程序中缓存数据的方式是什么?
例如,我想在第一次打开 Chrome 扩展程序时获取数据,然后将其保存(不确定保存在何处?),并且仅在 1 小时后才向 API 发出请求并再次保存数据。
有人可以推荐一种在 Chrome 扩展程序中执行此操作的方法吗?
最佳答案
对于本地存储,使用 chrome.storage.local
.它有一个非常简单的 API 和每个配置文件 5 MB 的存储空间。
权限是 “storage”
,它将授予您访问 chrome.storage.local
和 chrome.storage.sync
的权限。 local
是每个配置文件 5 MB,保存在客户端上。 sync
为 100 KB,保存在 Google 帐户中。相同的 API。
我发现 sync
不可靠,但您的需求似乎是 local
。
用法:
function fetchLive(callback) {
doSomething(function(data) {
chrome.storage.local.set({cache: data, cacheTime: Date.now()}, function() {
callback(data);
});
});
}
function fetch(callback) {
chrome.storage.local.get(['cache', 'cacheTime'], function(items) {
if (items.cache && items.cacheTime && items.cacheTime) {
if (items.cacheTime > Date.now() - 3600*1000) {
return callback(items.cache); // Serialization is auto, so nested objects are no problem
}
}
fetchLive(callback);
});
}
关于javascript - 如何在 Chrome 扩展程序中缓存数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31766467/
我是一名优秀的程序员,十分优秀!