IQA*_*eas 6 javascript arrays local-storage google-chrome-extension
据我所知,如果您想在Chrome Storage API中存储要继续添加项目的数组,则需要以下内容:
function addToHistory(url) {
chrome.storage.sync.get('history', function(obj) {
var history = obj.hasOwnProperty('history') ? obj.history : [];
history.push(url);
chrome.storage.sync.set({'history': history}, function() {
if (chrome.runtime.lastError)
console.log(chrome.runtime.lastError);
else
console.log("History saved successfully");
});
});
}
Run Code Online (Sandbox Code Playgroud)
这段代码困扰我; 每次将一个项目推到最后时加载然后保存相同的数组是非常低效的(特别是如果你的history
数组开始获得数千个条目).
有更有效的方法吗?我假设我不是第一个想要推送到阵列的人,所以有没有推荐的实现方法?
我认为 chrome.storage.sync API 并不适合您的需求。基本上,这个 API 非常适合记住用户偏好或简单而简短的数据。同步 API 的使用限制如下: - 存储中保存的所有数据为 102.4 KB - 每个项目 8 KB 数据 - 每小时 1,800 次写入
因此,如果您计划使用此 API 来存储一些历史数据,则应用程序可能会很快超出限制。
我假设您正在开发扩展,而不是应用程序。在应用程序中,您可以访问 chrome.syncFileSystem API,该 API 可用于将可同步数据保存在文件中。
回答你的问题没有一种方法可以优化你的功能。您可以尝试定期存储数据 - 例如每 30 秒左右一次。您只需要记住在用户关闭应用程序后保存数据即可。
您还可以将此值作为变量存储在内存中,并在用户离开屏幕或关闭应用程序时保存它,但这很危险,因为应用程序可能会在异步任务完成之前关闭。
无论如何,我认为这个 API 并不是适合您的应用程序的最佳解决方案。
归档时间: |
|
查看次数: |
346 次 |
最近记录: |