HTTP / WebSpec

ブラウザの保存場所の早見表(Cookie・localStorage・IndexedDB・OPFS ほか)

自作の道具のデータをブラウザに置いていて、「これはいつ消えるのか」を調べていたら、ブラウザの保存場所がいくつもあることを知りました。バックエンドばかりやってきたので、ほとんど意識したことがありませんでした。あとで見直せるよう、早見表にまとめておきます。

早見表

保存場所形容量の目安サーバーに送られるか閉じると主な使い道
Cookie小さな文字1 つ 4KB までアクセスのたびに自動で送られる期限まで残る(期限なしならブラウザを閉じると消える)ログイン状態の維持
localStorageキーと文字列5〜10MB送られない残る画面の設定、小さなデータ
sessionStorageキーと文字列5〜10MB送られないタブを閉じると消えるそのタブだけの一時的な状態
IndexedDBブラウザの中の DB大きい(ディスクの空きしだい)送られない残る構造のある大きなデータ
Cache Storageページのファイル(HTML・JS・画像)の写し。プログラムが管理する大きい送られない残るPWA をネットなしで開く(サービスワーカーが使う)
OPFSブラウザの中のファイル置き場大きい送られない残る大きなファイル、ブラウザの中で動かす SQLite
HTTP キャッシュページのファイルの写し。ブラウザが自動で管理する(プログラムからは直接触れない)ブラウザが決める―残る(古いものから消える)2 回目に開くときを速くする

どれも Chrome・Edge・Firefox・Safari のすべてで使えます。容量の上限の決め方は、ブラウザごとに違います。

別枠:利用者のファイル(File System Access API)

これはブラウザの保存場所ではなく、利用者の PC のファイルを、許可をもらって直接読み書きする仕組みです。ブラウザのデータを消しても、ファイルは消えません。使えるのは Chrome・Edge だけで、Firefox・Safari は安全面の理由から入れていません。

いつ消えるか

消える
場面説明
閲覧データの削除「Cookie と他のサイトデータ」を選ぶと、Cookie・localStorage・sessionStorage・IndexedDB・Cache Storage・OPFS がまとめて消える。「キャッシュされた画像とファイル」で消えるのは、主に HTTP キャッシュ
サイトごとの削除アドレスバーの左のアイコン → サイトの設定 →「データを削除」で、そのサイトの分だけ消える
閉じるときに自動で削除する設定Chrome の「すべてのウィンドウを閉じるときにサイトデータを削除する」がオンのとき。Edge の「閉じるときに閲覧データをクリアする」は項目ごとに選べて、「Cookie およびその他のサイトデータ」がオンのとき
掃除ソフトブラウザのデータを消すものがある
シークレットウィンドウシークレット(Edge では InPrivate)の中で保存したものは、シークレットのウィンドウをすべて閉じたときに消える
ディスクの空きが少ないときブラウザが、しばらく使っていないサイトの分から自動で消すことがある(「なるべく残す」扱い。navigator.storage.persist() で「消さないで」と頼める)
Safari の追跡防止プログラムが書いたデータ(localStorage・IndexedDB など)は、7 日間そのサイトを開かないと消える。Chrome・Edge にはない
サイトのプログラムが消すlocalStorage.clear() を呼ぶ、ログアウトのときにサーバーが「このサイトのデータを消して」と指示する(Clear-Site-Data)など
PC の買い替え・プロフィールの削除ブラウザの同期は、ブックマークやパスワードは引き継ぐが、これらの保存場所は引き継がない
消えたように見える(実は残っている)
場面説明
アドレスが変わった保存場所は、アドレスの組み合わせ(http か https か、ドメイン、ポート)ごとに別の箱。http から https に移した、ドメインを変えた、などで新しい箱は空になる。古い箱には残っている
別のブラウザ・プロフィールで開いたブラウザごと・プロフィールごとに別。Chrome で保存したものは Edge では見えない
シークレットで開いたふだんのウィンドウで保存したものは、シークレットからは見えない(空の状態から始まる)

覚えておくこと

  1. 消すときは、ほぼまとめて消える。localStorage だけ残る、ということは基本的にない
  2. サイト(アドレス)ごとに別の箱。ほかのサイトの分は読めない
  3. 大きいもの(IndexedDB・Cache Storage・OPFS)は、サイトごとの容量の枠を分け合っている。ディスクの空きが少なくなると、サイトの分が丸ごと消されることがある
  4. 大事なデータは、ブラウザの外(ファイル)にも置く。ブラウザの保存場所は、どれもブラウザの都合で消える

自分の目で見る

  • 見たいサイトを開いて F12 →「Application(アプリケーション)」→ 左の「Storage」に、Local storage・Session storage・IndexedDB・Cookies・Cache storage などが並んでいる
  • 同じ画面の「Storage」の見出しを押すと、そのサイトが使っている容量と、まとめて消すボタン(Clear site data)がある

コンソールで localStorage の中身を一覧にするコードは、ブラウザの localStorage(ローカルストレージ)とはに書いています。

バックエンドの感覚でたとえると

保存場所たとえ
Cookieリクエストのたびに、ヘッダーに必ず載る小さな値
localStorage小さなキー・バリュー型のストア(Redis のごく簡単な版)
sessionStorage接続(タブ)が切れたら消える、一時的なキー・バリュー
IndexedDBアプリに組み込んだ DB
OPFSアプリ専用の作業用ディスク
Cache Storage中身を自分で決められる、リバースプロキシのキャッシュ
HTTP キャッシュ自動で効く、リバースプロキシのキャッシュ

どれも「バックアップもレプリケーションもなく、利用者がいつでも消せる」置き場だと思っておくのが安全です。

関連記事

スポンサーリンク
タイトルとURLをコピーしました