HTML5 ローカル・ストレージ

❮ 前章へ 次章へ ❯

HTML ローカル・ストレージは、クッキーよりも優れています。


HTML ローカルストレージとは?

ローカル・ストレージによって、web アプリケーションは、ユーザのブラウザ内にデータをローカルに保存できます。

HTML5 より前は、アプリケーションデータは、すべてのサーバリクエストに含まれるクッキーに格納しなければなりませんでした。 ローカルストレージは、web サイトのパフォーマンスに影響を与えることなく、より安全で、かつ大量のデータをローカルに保存する ことができます。

クッキーとは異なり、ストレージの限度は非常に大きく(少なくとも5MB)、情報がサーバに転送されることはありません。

ローカルストレージは、ドメインごとです。1ドメインからの全ページは、同じデータを格納し、アクセスすることができます。


ブラウザ・サポート

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

API
Web ストレージ 4.0 8.0 3.5 4.0 11.5

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

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

ローカル・ストレージを使用する前に、ブラウザが localStorage と sessionStorage をサポートしているかチェックします:

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");

Try it Yourself ❯

例の説明:

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

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

localStorage 項目の "lastname" を削除する構文は次の通りです:

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).";

Try it Yourself ❯

sessionStorage オブジェクト

sessionStorage オブジェクトは、1 セッションだけのデータを保存することを除き、 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.";

Try it Yourself ❯

❮ 前章へ 次章へ ❯