[解決済み] localStorageのサイズの求め方
2022-05-01 01:40:07
質問
現在、HTML5のlocalStorageを利用したサイトを開発中です。ブラウザごとのサイズ制限については、すべて読みました。しかし、localStorageインスタンスの現在のサイズを調べる方法については、何も見当たりません。 この質問 は、JavaScript には、与えられた変数のサイズを表示する方法が組み込まれていないことを示しているようです。localStorageには、私が見たことのないメモリサイズのプロパティがあるのでしょうか?私が見逃しているこれを行うための簡単な方法があるのでしょうか?
私のサイトは、ユーザーが「オフライン」モードで情報を入力できるようにすることを目的としているので、ストレージがほとんどいっぱいになったときに警告を与えることができることは非常に重要です。
どのように解決するのですか?
このスニペットをJavaScriptコンソールで実行します(1行バージョン)。
var _lsTotal=0,_xLen,_x;for(_x in localStorage){ if(!localStorage.hasOwnProperty(_x)){continue;} _xLen= ((localStorage[_x].length + _x.length)* 2);_lsTotal+=_xLen; console.log(_x.substr(0,50)+" = "+ (_xLen/1024).toFixed(2)+" KB")};console.log("Total = " + (_lsTotal / 1024).toFixed(2) + " KB");
読みやすくするために、同じコードを複数行にしたもの
var _lsTotal = 0,
_xLen, _x;
for (_x in localStorage) {
if (!localStorage.hasOwnProperty(_x)) {
continue;
}
_xLen = ((localStorage[_x].length + _x.length) * 2);
_lsTotal += _xLen;
console.log(_x.substr(0, 50) + " = " + (_xLen / 1024).toFixed(2) + " KB")
};
console.log("Total = " + (_lsTotal / 1024).toFixed(2) + " KB");
または、ブックマークの '場所' フィールドにこのテキストを追加すると、便利に使えます。
javascript: var x, xLen, log=[],total=0;for (x in localStorage){if(!localStorage.hasOwnProperty(x)){continue;} xLen = ((localStorage[x].length * 2 + x.length * 2)/1024); log.push(x.substr(0,30) + " = " + xLen.toFixed(2) + " KB"); total+= xLen}; if (total > 1024){log.unshift("Total = " + (total/1024).toFixed(2)+ " MB");}else{log.unshift("Total = " + total.toFixed(2)+ " KB");}; alert(log.join("\n"));
追伸:コメントでのご要望にお応えして、スニペットを更新しました。現在では、キー自体の長さも含めて計算しています。 javascriptの文字列はUTF-16で格納されるため、それぞれの長さに2倍しています(2バイトを占有します)。
追伸:ChromeとFirefoxの両方で動作するはずです。
関連
-
[解決済み】「.addEventListener is not a function」なぜこのエラーが発生するのか?
-
フロントエンド null のプロパティ 'disabled' を読み取れない 問題が解決された
-
[解決済み] 配列から特定の項目を削除するにはどうすればよいですか?
-
[解決済み] jQueryで要素が非表示になっているかどうかを確認するには?
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] HTML5のlocalStorageにオブジェクトを格納する方法は?
-
[解決済み] 画面サイズ、現在のウェブページ、ブラウザウィンドウのサイズを取得する
-
[解決済み】別のウェブページにリダイレクトするにはどうすればいいですか?
-
[解決済み】jQueryでチェックボックスがチェックされているかどうかを確認するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Vueの要素ツリーコントロールに破線を追加する説明
-
vue+webrtc(Tencent cloud)ライブ機能の実践を実現するために
-
vue ディレクティブ v-html と v-text
-
vueの補間表現とv-textディレクティブの違いについて
-
[解決済み】最大呼び出しスタックサイズ超過エラー
-
[解決済み】JavaScriptの配列でforEachが関数でない不具合
-
[解決済み] TypeError: $.ajax(...) is not a function?
-
[解決済み】React - TypeError: 未定義のプロパティ 'props' を読み取ることができない。
-
[解決済み】React Uncaught Error: 対象コンテナが DOM 要素でない [重複]。
-
HTML5 LocalStorage ローカルストレージとセッションストレージの使用法