JavaScript | localStorageへのデータ保存と取得・破棄、注意点など

2021-11-26JavaScript Web Storage,JavaScript

JavaScript | localStorageへのデータ保存と取得・破棄、注意点など

JavaScriptを使ってlocalStorageにデータを保存する方法と、保存したデータを取得、または保存されているデータを破棄する方法です。

また、有効期限やデータの保存量制限、その他注意点も紹介しています。

localStorageが使えるか確認する

localStorageの処理を実装する場合、window.localStorageでアクセスしているブラウザがlocalStorageが使えるか確認処理を記述して、使える場合のみに処理を実装します。

if (window.localStorage) {
		//localStorageの処理
}

localStorageへデータを保存する

localStorageへデータを保存するにはlocalStorage.setItem()を利用します。

localStorage.setItem()は保存するデータのキー名と文字列データを設定して実行します。

localStorage.setItem('key', 'data');

localStorageへ配列・オブジェクト型データを保存する

localStorageへ配列・オブジェクト型のデータを保存するには、配列をJSONコードにシリアライズし、文字列として保存することで実装可能です。

連想配列、多次元配列やオブジェクト型も可能です。

let data = ['data1','data2'];
let json = JSON.stringify(data, undefined, 1);
localStorage.setItem('key', json);

localStorageからデータを取得する

localStorageからデータを取得するにはgetItem()を利用します。

getItem()のオプション引数には取得するデータのキー名を指定します。

let data = localStorage.getItem('key');

localStorageから配列・オブジェクト型データを取得する

localStorageにJSONデータとして保存したデータを取得して配列・オブジェクト型データに戻す方法です。

let data = localStorage.getItem('key');
data = JSON.parse(data);

文字列データの有無を先に確認する必要がない場合、一行で記述しても問題ありません。

let data = JSON.parse(localStorage.getItem('key'));

localStorageのデータを破棄する

ユーザーのブラウザに保存されているlocalStorageのデータを破棄するにはremoveItem()やStorage.clear()が利用可能です。

破棄・削除できるデータは、アクセスしているドメインURLと同一のドメイン下にあるデータに限ります。

removeItem()はキー名から保存されている個別のデータ単位でデータを削除します。

localStorage.removeItem('key');

Storage.clear()は同一ドメイン下に保存されているデータを全て削除したい場合に利用します。

storage.clear();

localStorageの有効期限

localStorageには有効期限はありません。

ユーザーがブラウザの機能を利用してデータを削除するか、removeItem()やStorage.clear()が実行された場合のみデータが破棄されます。

リファラー情報など一時的なデータ保持として利用したい場合は、ブラウザが閉じられた際に自動的にデータが破棄されるsessionStorageを利用することで実装可能です。

localStorageの文字数期限

localStorageのに保存可能な文字数期限はブラウザ毎に異なっていて、主要なブラウザでは最大5MBとなっています。

これは、キー名単位ではなくドメイン単位での文字数制限となります。

ドメイン変更を伴うサイト移転時はデータが保持できない

含むドメイン変更を伴うサイト移転時はデータが保持できません。

これはHTTPからHTTPSへの変更時も含まれます。

サイト移転時にデータの保持が必要な場合は、一旦データとセッション情報をデータベースに保存して新URLで取り出すか、新しいURLへの移動時にデータを付与するなどの処理を追加する必要があります。

また、サーバー移転など同一ドメインでのサイト移転であれは、データは保持されたままで利用することが可能です。

localStorageのセキュリティ

localStorageのデータは別ドメインからの参照は不可能となっていますが、悪意のあるサイトユーザーが存在した場合、ドメイン下であればJavaScriptを使ってアクセスされてしまう可能性があります。

ユーザーが書き込めるフォームがサイト内に存在する場合など、書き込まれた内容のチェックを厳格にしたり、localStorageに保持するデータに重要なデータは含めないようにする必要があります。

localStorageは同期処理

localStorageは性質上、同期処理となっています。

データの保存量制限を意識するレベルの大きなデータを扱う場合は、サイトパフォーマンスにも影響する可能性がありますので注意が必要です。