모든 스토리지가 동일하게 생성되는 것은 아님: 스토리지 버킷 도입

Storage Standard는 영구 스토리지 및 스토리지 서비스를 위한 API를 정의합니다. 할당량 추정치, 플랫폼 스토리지 아키텍처에 관해 알아봅니다. 영구 스토리지 제거를 대량으로 처리할 수 있는 API를 출시합니다. 메모리 압력을 더 잘 예측할 수 있습니다. Chromium 122부터 사용할 수 있습니다.

스토리지 표준으로 해결할 수 있는 문제는 무엇인가요?

일반적으로 사용자 기기의 저장공간이 부족하면 API를 통해 저장된 데이터는 사용자가 개입할 수 없으면 IndexedDB 또는 localStorage가 손실됩니다. 생성형 AI를 영구 스토리지에 대해 persist() 메서드 StorageManager 인터페이스 동시에 최종 사용자에게 권한을 요청하고 영구 스토리지로 유지할 수 있습니다

const persisted = await navigator.storage.persist();
if (persisted) {
  /* Storage will not be cleared except by explicit user action. */
}

저장소 유지를 요청하는 이 방법은 전부 아니면 전무입니다. 더 많은 것을 표현할 방법이 없음 세밀한 지속성을 필요로 하는 경우가 많습니다 모두 하나의 스토리지 버킷입니다

Storage Buckets API

Storage Buckets API의 핵심 개념 사이트에 여러 개의 스토리지 버킷을 만들 수 있는 권한을 부여하며, 브라우저에서 각 버킷을 독립적으로 삭제할 수 있습니다 이렇게 하면 개발자가 제거를 지정할 수 있습니다. 가장 가치 있는 데이터가 삭제되지 않도록 우선순위를 지정할 수 있습니다

사용 사례

스토리지 버킷이 어디에 유용한지 설명하기 위해 이메일 애플리케이션을 상상해 보세요. 그것은 앱이 클라이언트에만 있는 사용자의 보내지 않은 초안을 잃어버리면 복구할 수 없습니다. 반면에 서버에 저장되어 있다면 사용자는 아마도 가장 오래된 받은편지함 이메일 중 일부에는 문제가 없을 것입니다. 브라우저에서 저장 압력이 높은 경우 클라이언트에서 제거해야 합니다.

<ph type="x-smartling-placeholder">
</ph> 이메일 앱 인터페이스
받은편지함과 임시보관 메일을 위한 별도의 스토리지 버킷이 있는 이메일 앱 (참고용으로, Gmail 작동 방식이 반드시 반영되는 것은 아닙니다.)

Storage Buckets API 사용

새 스토리지 버킷 만들기

StorageBucketManager에서 open() 메서드를 사용하여 새 스토리지 버킷을 만들 수 있습니다. 인터페이스에 추가되었습니다.

// Create a storage bucket for emails that are synchronized with the
// server.
const inboxBucket = await navigator.storageBuckets.open('inbox');

영구적인 새 스토리지 버킷 만들기

스토리지 버킷이 유지되도록 durabilitypersisted 옵션을 전달할 수 있습니다. 인수를 open() 메서드에 전달합니다.

  • persisted는 스토리지 버킷을 유지해야 하는지 여부를 결정합니다. 허용되는 값은 다음과 같습니다. false (기본값) 또는 true입니다.
  • durability는 쓰기 성능을 다른 메모리와 비교하여 쓰는 데 도움이 되는 힌트를 브라우저에 제공합니다. 정전 시 데이터 손실 위험 감소 허용되는 값은 'relaxed'입니다. (기본값) 또는 'strict':

    • 버킷 'strict'개가 전원 장애 시 데이터 손실 위험을 최소화하려고 시도합니다. 예상 배송일: 성능 저하로 인한 비용이 발생하여 쓰기를 완료하는 데 시간이 더 오래 걸릴 수 있으며 이로 인해 배터리 소모량이 많고 저장 장치가 소모될 수 있습니다. 보다 빠르게 만들 수 있습니다.
    • 버킷 'relaxed'개가 '삭제'될 수 있음 작업 수행을 요청할 때 마지막 몇 초 동안 완료된 쓰기 전력 손실이 발생합니다 대신 이러한 버킷에 데이터를 쓰면 성능이 개선될 수 있습니다. 배터리 충전이 더 오래 지속될 수 있으며 저장 시간이 더 길어질 수 있습니다. 기기 전체 기간. 또한 정전이 발생해도 시스템 복구 시간에 비해 버킷 'strict'
// Create a storage bucket for email drafts that only exist on the client.
const draftsBucket = await navigator.storageBuckets.open('drafts', {
  durability: 'strict', // Or `'relaxed'`.
  persisted: true, // Or `false`.
});

스토리지 버킷에서 스토리지 API 액세스

각 스토리지 버킷은 Storage API와 연결됩니다. 예를 들면 IndexedDBCache 인터페이스 또는 File 인터페이스 이러한 스토리지 API는 평소처럼 진입점이 StorageBucket 인터페이스에서 비롯됩니다. 예를 들면 다음과 같습니다. StorageBucket.indexedDB입니다.

const inboxDb = await new Promise(resolve => {
  const request = inboxBucket.indexedDB.open('messages');
  request.onupgradeneeded = () => { /* migration code */ };
  request.onsuccess = () => resolve(request.result);
  request.onerror = () => reject(request.error);
});
드림

DevTools에서 저장소 버킷 디버그

애플리케이션 > 전용 트리에서 스토리지 버킷 검사 저장용량 섹션을 참조하세요.

스토리지 섹션에서 스토리지 버킷 트리를 사용 설정하기 전과 후

유용한 리소스