如何在Chrome扩展程序中缓存数据?

时间:2015-08-01 21:35:18

标签: javascript google-chrome caching google-chrome-extension

我正在为我工​​作的图书馆编写Chrome扩展程序。该扩展程序每次打开时都会从库的API中获取最新的书名。

随着越来越多的人使用它,它会对发送API数据的图书馆服务器造成很大的负担。

在Chrome扩展程序中缓存数据的方法是什么?

例如,我想首次打开Chrome扩展程序时获取数据,然后将其保存(不知道在哪里?),并且仅在经过1小时后才向API请求并再次保存数据。

有人可以推荐在Chrome扩展程序中执行此操作的方法吗?

1 个答案:

答案 0 :(得分:10)

对于本地存储,请使用chrome.storage.local。它有一个非常简单的API和每个配置文件5 MB的存储空间。

该权限为"storage",并授予您chrome.storage.localchrome.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);
  });
}