我正在为我工作的图书馆编写Chrome扩展程序。该扩展程序每次打开时都会从库的API中获取最新的书名。
随着越来越多的人使用它,它会对发送API数据的图书馆服务器造成很大的负担。
在Chrome扩展程序中缓存数据的方法是什么?
例如,我想首次打开Chrome扩展程序时获取数据,然后将其保存(不知道在哪里?),并且仅在经过1小时后才向API请求并再次保存数据。
有人可以推荐在Chrome扩展程序中执行此操作的方法吗?
答案 0 :(得分:10)
对于本地存储,请使用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);
});
}