Webアプリケーションの開発により、クライアント側ストレージの使用が増加しており、クライアント側ストレージを実装する方法はさまざまです。最もシンプルで互換性のあるソリューションは Cookie ですが、実際のクライアント側ストレージとしては、Cookie には多くの致命的な欠陥があります。さらに、 userData Behavior はIE6 以降でも使用でき、 globalStorage はFirefox で使用でき、 Flash Local Storage はFlash プラグインのある環境で使用できます。ただし、これらのメソッドにはすべて互換性の制限があるため、実際には使用できません。使用するのに最適です。上記の状況に対応して、HTML5 はより理想的なソリューションを提供します。複雑なデータを保存する必要がある場合は、 Web Database を使用でき、SQL をクライアント プログラムのように使用できます (ただし、Web Database 標準は現在デッドロックにあり、現在実装されているブラウザは非常に限られています); キーと値のペアで簡単に解決できるデータを保存する必要がある場合は、 Web Storage を使用できます。 この記事では主にWeb Storageの具体的な状況をさまざまな側面から紹介します。
sessionStorage と localStorage
Web Storage は実際には、sessionStorage と localStorage の 2 つの部分で構成されます。
sessionStorage は、セッション内のデータをローカルに保存するために使用されます。このデータには同じセッション内のページからのみアクセスでき、セッションが終了するとデータは破棄されます。したがって、sessionStorage は永続的なローカル ストレージではなく、セッション レベルのストレージにすぎません。
localStorage は、データがアクティブに削除されない限り、永続的なローカル ストレージとして使用されます。
Cookie ではなく Web ストレージを選択する理由は何ですか?
Cookie と比較して、Web ストレージには次のような多くの利点があります。
1. より大きなストレージ スペース: IE8 の各独立したストレージ スペースは 10M です。他のブラウザの実装は若干異なりますが、Cookie よりもはるかに大きくなります。
2. 保存されたコンテンツはサーバーに送信されません。Cookie が設定されると、Cookie のコンテンツがリクエストとともにサーバーに送信されます。これは、ローカルに保存されたデータの帯域幅を無駄にします。 Web Storage 内のデータはローカルにのみ存在し、サーバーとは一切対話しません。
3. より豊富で使いやすいインターフェース: Web Storage は、より豊富なインターフェースのセットを提供し、データ操作を容易にします。
4. 独立したストレージ スペース: 各ドメイン (サブドメインを含む) には独立したストレージ スペースがあり、各ストレージ スペースは完全に独立しているため、データの混乱は発生しません。
互換性はどうですか?
次のさまざまなテストは、IE8、Firefox3.6、Chrome5、Safari4、Opera10 のブラウザで実行されました。各ブラウザの API の実装は基本的に同じであり、互換性の問題はいくつかありますが、実際には同じではありません。通常の使用に影響を与えます。
セッションストレージテスト
このセクションでは主に、sessionStorage のいくつかの機能をテストします。テストの焦点は、各ブラウザーによるセッションの定義とクロスドメイン状況です。テスト方法は非常に簡単です。ページ Aを開き、ページ A に現在のセッション データを書き込み、さまざまな方法を使用してページ A のリンクまたはボタンからページ B に入ります。ページ B がページ A のデータにアクセスできるかどうかは、これを意味します。ブラウザは現在のページ A と B を同じセッションとして認識します。テストの具体的な結果を表 1 に示します。
表 1 セッションストレージ互換性テスト
表 1 からわかるように、セキュリティ上の理由から、サブドメイン間を含め、すべてのブラウザーでドメインを越えてセッション データにアクセスすることは許可されていません。他の側面では、主流のブラウザでの実装は比較的一貫しています。