Chrome Extension: Chrome.storage 存储API简单使用 (缓存,cache)

有时候我们不满足于localStorage只能保存string的单调功能,那么试一试chrome.storage中存储多种类型的本领?

*.本文中的操作实例仅仅使用storage.local,其他API都类似。

声明权限

{
	"permissions": ["storage"]
}

保存数据

// chrome.storage.local.set函数需要两个参数,一个为存储对象,一个为回调函数
chrome.storage.local.set({
	string: '可以存储字符串',
	array: ['或者', '数组'],
	object: {k: '或者', v: '对象'},
	int: 111
}, function(){
	console.log('保存成功');
})

获取数据

// chrome.storage.local.get函数需要两个参数,第一个为要获取的键值,第二个是获取成功回调函数
chrome.storage.local.get('array', function(arr){
	console.log(arr);
});
// 还可以这样
chrome.storage.local.get(['object', 'string'], function(obj){
	console.log(obj.object);
	console.log(obj.string);
});

删除数据

chrome.storage.local.remove('string', function(){
	console.log('删除成功');
});
// 或者
chrome.storage.local.remove(['int', 'array'], function(){
	console.log('删除成功');
});

清空数据

chrome.storage.local.clear();

监听事件

由于不怎么使用,暂时不记。。

实例:

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);
  });
}

 

本文: Chrome Extension: Chrome.storage 存储API简单使用 (缓存,cache)