使用存储分区时的最大 IndexedDB 性能

Chrome 团队对 IndexedDB (IDB) 的实现做出了一些与性能相关的改进。例如,将每个实例的后备存储空间移至单独的序列(您可以大致将其视为单独的线程)。这意味着,无论是从同一网站还是跨网站,并发使用 IDB 的速度都更快。这篇博文提供了所有详细信息,并说明了您需要执行哪些操作才能充分利用这一变更(Chrome 126 及以上版本均提供)。

如果您在跨网站使用 IDB,则无需执行任何操作。一旦浏览器级的迁移进行了,并且每个 IDB 实例的后备存储区都迁移到了单独的序列,那么您无需进行任何操作,即可实现性能提升。

要提升同网站使用情况的性能,您需要将 IDB 使用情况隔离到不同的实例(即存储分区)中。以下代码示例展示了具体运作方式:

const request = indexedDB.open('main', 1);
request.onsuccess = (event) => {
  /* Do stuff with the main instance. */
};

// By default, just use the regular IDB instance.
let idb = indexedDB;
// Open a separate storage bucket if the API is supported.
if ('storageBuckets' in navigator) {
  const bucket = await navigator.storageBuckets.open('logs-bucket');
  // Get access to the storage bucket's IDB instance.
  idb = bucket.indexedDB;
}
const bucketRequest = idb.open('logs', 1);
bucketRequest.onsuccess = (event) => {
  /* Do stuff with the separate instance. */
};

这篇博文中提到的性能提升是一种渐进式增强功能,当浏览器(Chrome 122 及以上版本)支持 Storage Buckets API 时,以及 Chrome 126 开始支持 IDB 实例时,您可以利用该增强功能。

请在 Glitch 上查看此功能的演示源代码展示了上一个代码段中的概念的实际运用。请务必严格按照演示中的说明操作。如果您使用 Chrome 开发者工具检查 IDB 实例,可以在存储分区名称部分看到所使用的存储分区,在下面的屏幕截图中用红色框突出显示。

阅读余下内容
 

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注


京ICP备12002735号