HTML5ローカルストレージとセッションストレージ


561

非永続的であり、現在のウィンドウにのみスコープが設定される以外に、ローカルストレージよりもセッションストレージにメリット(パフォーマンス、データアクセスなど)はありますか?


15
@robert-私はあなたが間違っていると思います。w3.org/TR/webstorageからsessionSessionは「トップレベルのブラウジングコンテキスト」にスコープが設定されています。つまり、各ブラウザータブ/ウィンドウに固有です。localStorageのスコープはオリジンに限定されます。つまり、同じオリジンのすべてのページで共有されます。
ブローファ2013


回答:


812

localStoragesessionStorageはどちらもStorageを拡張します。の意図された「非永続性」を除いて、それらの間に違いはありませんsessionStorage

つまり、に格納されたデータは、localStorage 明示的に削除されるまで存続します。加えられた変更は保存され、サイトへの現在および将来のすべてのアクセスで利用できます。

の場合sessionStorage変更はタブごとにのみ使用できます。加えられた変更は保存され、閉じられるまでそのタブの現在のページ使用できます。いったん閉じると、保存されているデータは削除されます。


17
あなたはここに役立つかもしれないことをより広範な議論があります:stackoverflow.com/questions/19867599/...は
エド・サイクス

13
httpでストレージにデータを保存すると、httpsではデータを取得できなくなります
Mark Thien

私はこれをChrome v41.xでテストしましたが、httpsに関する上記のステートメントは当てはまらないようです。localStorageは保存されたデータを保持します。
CCC

36
SessionStorageはページのリロードと復元後も存続しますが、新しいタブ/ウィンドウを開くと新しいセッションが開始されます。
Patrick

160

唯一の違いは、localStorageの有効期限は異なり、sessionStorageそれを作成したウィンドウが開いている間のみアクセスできることです。
localStorage削除するか、ユーザーが削除するまで続きます。
あなたが使用したいログインユーザ名とパスワードを保存したいと言うことができますsessionStorage以上のlocalStorageセキュリティ上の理由を(すなわち。後で自分のアカウントにアクセスして別の人)。
あなたは自分のマシン上でのユーザーの設定を保存したい場合しかし、あなたはおそらくたいですlocalStorage。概して:

localStorage-長期使用に使用します。
sessionStorage-変化するものや一時的なものを保存する必要がある場合に使用します


103

ローカルストレージとセッションストレージの違いを理解するのに役立つ他のポイントはほとんどありません

  1. ローカルストレージとセッションストレージはどちらもドキュメントの作成元を範囲とするため、

    https://mydomain.com/
    http://mydomain.com/
    https://mydomain.com:8080/

    上記のすべてのURL が同じストレージを共有することはありません。(Webページの通知パスはWebストレージに影響しません)

  2. 異なるタブで開いている同じ生成元ポリシーを持つドキュメントでもセッションストレージは異なるため、2つの異なるタブで開いている同じWebページが同じセッションストレージを共有する。

  3. ローカルストレージとセッションストレージのどちらも、ブラウザベンダーが対象としています。そのため、IEで保存したストレージデータをChromeやFFで読み取ることはできません。

お役に立てれば。


3
いいえ、httpとhttpsの間で同じsessionStorageを共有しますが、localStorageは共有しません。
Shahdat

5
最初にhttpsオリジンでsessionStorageを設定すると、httpで使用できますが、httpでsessionStoreを作成すると、httpでは使用できません
Shahdat

4
@Shahdat、「httpsで利用できなくなる」という意味ですか(sに注意してください)?
Daniel Werner、

3
@DanielWernerはい、httpでsessionStoreを作成すると、httpsでは使用できなくなります。
Shahdat

28

との主な違いはlocalStorage、タブごとに固有でsessionStorageあることsessionStorageです。タブを閉じると、sessionStorage削除されlocalStorageません。また、タブ間で通信することはできません:)

別の微妙な違いは、たとえばSafari(8.0.3)localStorageでは2551 k文字の制限がありsessionStorageますが、ますが、ストレージ無制限です

Chrome(v43)ではlocalStoragesessionStorage 5101 k文字に制限されています(通常モードとシークレットモードの違いはありません)

FirefoxではlocalStoragesessionStorage 5120 Kの文字(ノーマル/プライベートモードとの違いはありません)に制限されています

速度にまったく違いはありません:)

Mobile SafariとMobile Chromeにも問題があります。プライベートモードのSafariとChromeの最大容量は0KBです


1
5101 k文字に制限されていますか?そう.. 5101万文字?
Zze

@Zzeはい、1文字は通常1バイトであるため、500万文字は5Mb相当のストレージです。
Basim Khajwal

@BasimKhajwal 5MBです。ビットではなくバイト。
イエティ

言及した内容にソースを追加していただけますか?
Mukus '19

@Mukus、ソースがありません、私は自分でテストを実行し、localStorageがあるのにプライベートモードサファリで問題がありましたが、そこにスペースがないため、localStorageが存在するためポリフィルがトリガーされませんでしたが、スクリプトが格納できないためスクリプトが失敗しましたそこに何でも。このツールを使用してテストすることもできます-dev-test.nemikor.com/web-storage/support-test
Eek

17

sessionStoragelocalStorage1つのセッションのデータのみを保存し、ユーザーがそれを作成したブラウザウィンドウを閉じると削除されることを除いて、と同じです。


10

パフォーマンスに関しては、私の(粗雑な)測定では、1000回の書き込みと読み取りに違いはありませんでした。

セキュリティに関しては、直感的には、localStoreがsessionStoreの前にシャットダウンされるように見えるかもしれませんが、具体的な証拠はありません。

機能的には、上記のdigitalFreshに同意


1
ページ読み込みのパフォーマンスに関して:sessionStorageとlocalStorageの両方が開始され、ページ読み込み-レンダリングサイクルから読み込まれます。したがって、初期ページの読み込み時間の料金はブラウザ内からは測定できません。
ミルコ

6

Yaセッションストレージとローカルストレージは動作が同じですが、ローカルストレージはデータを保存し、ユーザーがキャッシュを削除しない限り、Cookieとセッションストレージデータは、セッションを閉じるまで、つまり閉じるまでシステムに保持されます。セッションストレージ作成ウィンドウ。


5

私の意見では、ローカルストレージに対するセッションストレージの利点は、Firefoxで無制限の容量があり、セッションより長く持続しないことです。(もちろん、それはあなたの目標が何であるかに依存します。)


2

ローカルストレージ:ユーザー情報データを有効期限なしで保存します。このデータは、ユーザーがブラウザウィンドウを閉じたときに削除されず、日、週、月、年で利用できます。

//Set the value in a local storage object
localStorage.setItem('name', myName);

//Get the value from storage object
localStorage.getItem('name');

//Delete the value from local storage object
localStorage.removeItem(name);//Delete specifice obeject from local storege
localStorage.clear();//Delete all from local storege

セッションストレージ:ローカルストレージの日付と同じですが、ウェブユーザーがブラウザウィンドウを閉じたときにすべてのウィンドウが削除されます。

//set the value to a object in session storege
sessionStorage.myNameInSession = "Krishna";

続きを読むクリック


2
  • sessionStorage ページセッションの期間中(ページの再読み込みや復元を含め、ブラウザが開いている限り)使用可能な特定のオリジンごとに個別のストレージ領域を維持します

  • localStorage 同じことを行いますが、ブラウザを閉じて再度開いた場合でも保持されます。

これはhttps://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_APIから取得しました

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.