根据我的理解,如果您想在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");
});
});
}
这段代码困扰我;加载然后保存相同的数组每次你将一个项目推到最后是极其低效的(特别是如果你的history
数组开始获得数千个条目)。
有更有效的方法吗?我假设我不是第一个想要推送到阵列的人,所以有没有推荐的实现方法?
答案 0 :(得分:0)
我不认为chrome.storage.sync API非常适合您的需求。基本上,这个API非常适合记住用户首选项或简单和简短的数据。 Sync API具有以下用途的限制: - 保留在存储中的所有数据的102.4 KB - 每个项目8 KB的数据 - 每小时1,800次写作
因此,如果您计划使用此API存储一些历史数据,那么应用可能会非常快地超出限制。
我假设您正在开发扩展程序,而不是应用程序。在应用程序中,您可以访问chrome.syncFileSystem API,该API可用于在文件中保存可同步数据。
回答你的问题,没有一种方法可以优化你的功能。您可以尝试定期存储数据 - 例如每30秒左右。您只需记住在用户关闭应用程序后保存数据。
您还可以将此值存储为内存中的变量,并在用户离开屏幕或关闭应用时将其保存,但这很危险,因为应用可能会在异步任务完成之前关闭。
无论如何,我认为此API不是您应用的最佳解决方案。