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

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

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

随着它被越来越多的人使用,它给发送 API 数据的图书馆服务器带来了巨大的负担。

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

例如,我想在第一次打开 Chrome 扩展程序时获取数据,然后将其保存(不确定保存在何处?),并且仅在 1 小时后才向 API 发出请求并再次保存数据。

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

最佳答案

对于本地存储,使用 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);
  });
}

关于javascript - 如何在 Chrome 扩展程序中缓存数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31766467/

相关文章:

google-chrome - Chrome content_script : How to wait for jQuery

javascript - Safari 中可编辑内容 div 的 Column-Count Css 错误

javascript - 选择 AngularJS 选项

javascript - 这些演示 : http://www. ape-project.org/demos/在我的机器上无法运行

javascript onclick 警报在 chrome 中不起作用

html - 是否有一个库可以抽象 Web Audio API 和 Mozilla Audio Data API 来读取原始音频(MP3,ogg)

mysql - 使用 Node.js 缓存数据库查询

ios - 我什么时候应该将 deleteCacheWithName 与 fetchedResultsController 一起使用?

caching - Yii半静态站点优化

javascript - 如何使用 javascript 每天更改文本内容?