最新のWeb開発のチュートリアル

HTML5ローカルストレージ


HTMLローカルストレージ、より良いcookies


HTMLローカルストレージとは何ですか?

ローカルストレージを使用すると、Webアプリケーションは、ユーザーのブラウザ内でローカルにデータを保存することができます。

HTML5の前に、アプリケーションデータは、に格納されなければならなかったcookies 、すべてのサーバー要求に含まれます。 ローカルストレージは、より安全で、かつ大量のデータは、ウェブサイトのパフォーマンスに影響を与えずに、ローカルに保存することができます。

異なりcookies 、ストレージの制限ははるかに大きい(at least 5MB)との情報がサーバに転送されることはありません。

ローカルストレージは、原点あたりで(per domain and protocol) 。 すべてのページは、1つの原点から、同じデータを保存し、アクセスすることができます。


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

ウェブストレージは二つの異なる記憶領域-ローカルストレージとセッションストレージスコープと寿命が異なるを提供しています。

(同一生成元ポリシーに定義されているプロトコル、ホスト名、ポート番号の組み合わせ)をローカルストレージに配置されたデータは、原点ごとである(データは、以前のデータを記憶している同一の原点からのページからロードされたすべてのスクリプトに利用可能である)およびブラウザが閉じられた後に持続します。

セッションストレージごとの起源あたりのウィンドウやタブで、ウィンドウの寿命に制限されています。 セッションストレージは、同じWebアプリケーションの別のインスタンスが良くクッキーによってサポートされていないお互い、ユースケースと干渉することなく、異なるウィンドウで実行できるようにするためのものです。


ブラウザのサポート

表中の数字は、完全にローカルストレージをサポートする最初のブラウザのバージョンを指定します。

API
Web Storage 4.0 8.0 3.5 4.0 11.5

HTMLローカルストレージオブジェクト

HTMLローカルストレージは、クライアント上のデータを格納するための2つのオブジェクトを提供します。

  • window.localStorage -有効期限なしで保存したデータ
  • window.sessionStorage - 1つのセッションのデータを格納する(ブラウザのタブを閉じたときにデータが失われます)

ローカルストレージを使用する前に、チェック・ブラウザのサポートlocalStoragesessionStorage

if(typeof(Storage) !== "undefined") {
    // Code for localStorage/sessionStorage.
} else {
    // Sorry! No Web Storage support..
}

localStorageオブジェクト

localStorageオブジェクトは、有効期限なしでデータを格納します。 データは、ブラウザを閉じたときに削除されません、そして次の日、週、または年利用できるようになります。

// Store
localStorage.setItem("lastname", "Smith");
// Retrieve
document.getElementById("result").innerHTML = localStorage.getItem("lastname");
»それを自分で試してみてください

例を説明します:

  • 作成localStorageと名前/値ペアname="lastname"value="Smith"
  • 値を取得し"lastname"し、ID =「結果」を持つ要素に挿入

上記の例では、このように書くことができます:

// Store
localStorage.lastname = "Smith";
// Retrieve
document.getElementById("result").innerHTML = localStorage.lastname;

削除する構文"lastname"次のようにのlocalStorage項目は次のとおりです。

localStorage.removeItem("lastname");

注:名前/値ペアは、常に文字列として保存されます。 必要なときに別の形式に変換することを忘れないでください!

次の例では、ユーザーがボタンをクリックした回数をカウントします。 このコードでは、値列は、カウンタを増加させることができるように数値に変換されます。

if (localStorage.clickcount) {
    localStorage.clickcount = Number(localStorage.clickcount) + 1;
} else {
    localStorage.clickcount = 1;
}
document.getElementById("result").innerHTML = "You have clicked the button " +
localStorage.clickcount + " time(s).";
»それを自分で試してみてください

sessionStorageオブジェクト

sessionStorageオブジェクトはに等しいlocalStorageそれが唯一つのセッションのデータを格納することを除いて 、オブジェクト。 ユーザーが特定のブラウザタブを閉じたときのデータが削除されます。

次の例では、現在のセッションで、ボタンをクリックしたユーザーの回数をカウントします。

if (sessionStorage.clickcount) {
    sessionStorage.clickcount = Number(sessionStorage.clickcount) + 1;
} else {
    sessionStorage.clickcount = 1;
}
document.getElementById("result").innerHTML = "You have clicked the button " +
sessionStorage.clickcount + " time(s) in this session.";
»それを自分で試してみてください