★Web Storage
| Web Storageとは
|
Web Storageは、ユーザーのローカル環境(ブラウザ)にデータを保存するための仕組みです。 データの保存・上書き・削除・全クリアなどの操作は、JavaScriptで行うことができます。
Web Storageを利用すると、ユーザーごとにカスタマイズされた情報を提供することが可能となります。 この仕組みはクッキー(HTTP cookie)とよく似ていますが、クッキーに比べて保存できる容量が大きいため、 例えば、オフラインでもウェブアプリケーションを動作させられるだけの 必要十分なデータをユーザーのローカル環境に保存することなどが可能となります。
Web Storageには、sessionStorageとlocalStorageの2種類のストレージが用意されています。 どちらもキー(key)と値(value)をペアにしたデータのリストを ユーザーのローカル環境に保存するkey-value型のデータ保存形式である点は同じですが、 データの有効期限などが異なるので目的に応じて使い分けます。
|
| sessionStorageは、一回限りのセッションで有効なストレージ
|
sessionStorageは、ウィンドウやタブ単位での一回限りのセッションで有効なストレージです。 ウィンドウやタブが開いている間のみデータが保存され、閉じるとデータが失われます。 同じドメインのサイトを別々のウィンドウで開いている場合には、それぞれが別のsessionStorageとなります。 クッキーとは異なり、ウィンドウ間でデータが共有されることはありません。
sessionStorageを利用する一例を挙げてみます。 例えば、2つのウィンドウで同じサイトを開きながら航空券を注文する場合、 クッキーでは買い物かご情報が混在してしまって、同じフライトのチケットを気づかずに2枚注文してしまう可能性があります。
sessionStorageでは、それぞれが別のセッションとなるため、 別ウィンドウの買い物かご情報が混在してしまうことがありません。
|
| localStorageは、オリジン単位でデータを永続的に保存するストレージ
|
localStorageは、オリジン単位でデータを永続的に保存するストレージです。 オリジンとは、「http://www.example.com:80」のような「プロトコル://ドメイン名:ポート番号」のことです。 オリジンが同じであれば別ウィンドウでもデータを共有でき、ブラウザを終了してもデータは失われません。 データ保存量の上限はブラウザへの推奨値が1オリジン当たり5MBとされており、 クッキーの4KBに比べるとより大きなデータを保存できるようになっています。
localStorageを利用する一例を挙げてみます。 例えば、ウェブメールにおけるメールの送受信データのような比較的大きなデータの場合、 クッキーでは保存できるデータ量に上限があるため、すべてのデータをローカル環境に保存することは困難です。 また、クッキーではユーザーがアクセスする度にデータがサーバーに送信されるため、セキュリティの観点からも好ましくありません。
localStorageでは、ローカル環境に5MBまでのデータを永続的に保存でき、 ユーザーのアクセスの度にデータがサーバーに送信されることがありません。 ウェブメールの例で言えば、localStorageなら送受信データをローカル環境に保存でき、 オフラインウェブアプリケーションと組み合わせることで、オフラインでのメール閲覧なども可能となるでしょう。
|
| Web Storageで指定できる命令
|
Web Storageで指定できる命令は、データの保存・保存したデータの取得・指定キーの値削除・全クリアのいずれかです。 それぞれの命令を指定するメソッドは以下の通りです。 メソッド・属性は、sessionStorageとlocalStorageで共通となります。
getItem(key) …… keyに対応するvalueを取得する
setItem(key, value) …… keyとvalueをペアにしてデータを保存する removeItem(key) …… keyに対応するvalueを削除する clear() …… データをすべてクリアする 利用しているサーバーで .htaccess が使用できるなら、 以下の一行を追加すると拡張子「.manifest」のMIMEタイプがtext/cache-manifestであることを指定できます。
JavaScriptソース
尚、上のサンプルではsessionStorageとしてデータを保存していますが、 「sessionStorage」の部分を「localStorage」に変えれば localStorageとしてデータが保存されます。
|
| Web Storageのイベント
|
sessionStorageとlocalStorageにデータの追加・上書き・削除・全クリアなどの 何らかの更新をするとstorageというイベントが発生します。 storageイベントには、以下の属性が用意されています。
|
| Web Storageのサンプル ソース
HTML + JavaScriptソース |
| Web Storageのメソッド・属性
|
Web Storageには、以下のメソッド・属性が用意されています。
ストレージインターフェース The Storage interfacelength …… 保存されているデータの数を返す
key(n) …… 保存されているn番目のkeyを返す getItem(key) …… keyに対応するvalueを取得する setItem(key, value) …… keyとvalueのペアでデータを保存する removeItem(key) …… keyに対応するvalueを削除する clear() …… データをすべてクリアする |
| JavaScriptでアプリケーションキャッシュを扱う
|
JavaScriptのAPIを利用することで、アプリケーションキャッシュをより詳細に制御することができます。 アプリケーションキャッシュAPIで、現在のところ指定できる命令は以下の2つのメソッドです。
|
| applicationCacheで定義されている7つのイベント
|
キャッシュに関する動作がどのような状況にあるかは、以下の7つのイベントで取得します。 それぞれのイベント発生時の動作をスクリプトで指定することで、 ユーザーに対してより高度なインターフェースを提供することができるでしょう。
|
| JavaScriptでアプリケーションキャッシュを扱う サンプル
HTML + JavaScriptソースキャッシュマニフェストの指定内容 |
anchor: ma