Blu*_*s23 4 javascript google-chrome google-chrome-extension
我的Chrome扩展程序使用存储一些数据chrome.storage,并根据需要从存储中获取结果.
但是,我现在意识到我需要定期刷新数据chrome.storage- 这意味着不时清除它.
是否有可能:
让Chrome chrome.storage视为会话存储 - 也就是说 - 一旦浏览器关闭它就会清除数据?
如果无法满足要求,chrome.storage.remove那么清除存储的唯一方法是什么?
当chrome.storage空间达到极限时会发生什么?
wOx*_*xOm 10
Date.now()使用前缀/后缀键存储每个对象的值或旁边.
如果对象很大,单独的键可能会更好.
Date.now() - CACHE_DURATION_IN_MSremove()并且clear()是从chrome.storage中删除的唯一方法
5,242,880字节:可以存储在本地存储中的最大数据量(以字节为单位),通过每个值的JSON字符串加上每个键的长度来衡量.如果扩展名具有unlimitedStorage权限,则将忽略此值.将导致超出此限制的更新立即失败并设置runtime.lastError.
注意:chrome.runtime.lastError未发生错误时未定义.
如您所见,要忽略默认的5MB限制,请使用"unlimitedStorage"权限.
原始示例(更好的一个将使用Promise):
function save(data, callback, retrying) {
    Object.keys(data).forEach(k => data[k].savedOn = Date.now());
    chrome.storage.local.set(data, () => {
        if (!chrome.runtime.lastError)
            return callback();
        if (retrying)
            throw chrome.runtime.lastError.message;
        cleanup(() => save(data, callback, true));
    });
}
const CACHE_DURATION = 7 * 24 * 3600 * 1000; // 7 days
function cleanup(callback) {
    var cutoff = Date.now() - CACHE_DURATION;
    chrome.storage.local.get(null, all => {
        var expiredKeys = Object.keys(all).filter(k => all[k].savedOn < cutoff);
        chrome.storage.local.remove(expiredKeys, callback);
    });
}
| 归档时间: | 
 | 
| 查看次数: | 1850 次 | 
| 最近记录: |