■ はじめに
クライアント側にデータを保存したい場合、クッキーがあるが、容量が少ない。 ~~~~ * Cookie の有効・無効の設定はブラウザで行うことができる * ブラウザでは 最低 300 個のクッキー(RFC2109 より) => これを超えると古い方から削除される * 一つのクッキーあたり最低 4096 バイト(RFC2109 より) * 個々のホストもしくはドメイン名ごとに最低 20 個のクッキー(RFC2109 より) ~~~~ そこで、HTML5から導入された「Web Storage (ウェブ ストレージ)」について、調べてみる。
目次
【1】特徴/利点 【2】Web Storageの種類 1)localStorage 2)sessionStorage 【3】使用上の注意 1)実装上での注意点 2)ブラウザ設定上での注意点 【4】サンプル 例1:テキストボックスでの保存
【1】特徴/利点
* データ保存容量 : 5MByte~(クッキー数KBより大容量) * キー単位では無制限 * データを利用する時のみサーバ側へ送信 (クッキーよりはセキュアに利用でき、ネットワーク負荷が軽い)
【2】Web Storageの種類
1)localStorage
* ブラウザ内に永続的にデータを保存するストレージ * データの有効期限なし * 「オリジン(origin)単位(※)」の単位で保存
※オリジン
「プロトコル(例:http)+ドメイン(例:blogs.yahoo.co.jp)+ポート番号(例:80)」 で識別される
2)sessionStorage
* ウィンドウごとのセッションで有効なストレージ => ウィンドウ/タブ間では、データ共有できない => ウィンドウ/タブが閉じられると、データは失われる
【3】使用上の注意
1)実装上での注意点
1) 機密情報を極力保管しない方がいい 2) (同じPCで複数ユーザが使用する場合を想定して)キーを、ユーザ識別情報と共に保存する
2)ブラウザ設定上での注意点
* 結構多かったので、以下の関連記事にまとめた。
【4】サンプル
http://dev.classmethod.jp/references/webstrorage_favorite-condition/
を参考に、検索条件(今回はテキストボックスのみ)の保存を試みる
例1:テキストボックスでの保存
<!DOCTYPE html> <html> <head> <meta charset='UTF-8'> <script src="http://code.jquery.com/jquery-1.10.1.min.js"></script> </head> <body> <div id="message"></div> <form id='searchConditionForm'> <table> <tbody> <tr> <td>テキストボックス</td> <td> <input name='textData' id='textData' type='text'/> </td> </tr> </tbody> </table> <input id='buttonSeach' type='submit' value='Seach' onClick="saveSearchCondition()" /><br/> </form> <script type="text/javascript"> // キーを、ユーザ識別情報と共に保存する var SavingKey = 'userId001' + 'searchData'; $(function() { // ローカルストレージの利用可否確認 if(!localStorage) { document.getElementById('message').innerText = 'ローカルストレージが使えないです'; return; } // ローカルストレージからデータを取り出し var searchData = localStorage.getItem(SavingKey); if (searchData) { searchDataset = JSON.parse(searchData); $('#textData').val(searchDataset.textData); } }); function saveSearchCondition() { var searchDataset = new Object(); searchDataset.textData = $('#textData').val(); localStorage.setItem(SavingKey, JSON.stringify(searchDataset)); } </script> </body> </html>
関連記事
Web Storage 〜 基本編 〜
https://dk521123.hatenablog.com/entry/2015/12/20/163840
Web Storage 〜 あれこれ編 〜
https://dk521123.hatenablog.com/entry/2018/07/30/204421
Web Storageでのトラブル
https://dk521123.hatenablog.com/entry/2015/12/25/000100