これは、この質問のフォローアップであり、Cookieを作成するlocalStorage
か、複数のセッションにわたって変数を保持するために使用するかを選択するように提案されました。誰かが私に両方の長所と短所、そしてどちらを選ぶべきかについての推薦を与えることができますか?
4 に答える
localStorageを使用します。
長所
- データへの高速で簡単な読み取り/書き込みアクセス
- 負荷を軽減するすべてのリクエストとともにデータがサーバーに転送されるわけではありません
- キーと値のペアのファッション
短所
- 古いブラウザではサポートされていません
- ドメインごとに最大5MBのデータを保存できます
クッキーに関しては、時々役に立ちます。ショッピングカートは、ユーザーがブラウザ/セッションを閉じた後にショッピングカートのアイテムを復元する場合にCookieが非常に役立つシナリオの1つです。ただし、Cookieはリクエストごとにサーバーに転送されるため、あまり多くのCookieを保存しないでください(AJAXリクエストも含まれます)。これは、サイトが人気を博し、1時間/日あたり数千/数十万のヒットを獲得した場合に劇的なボトルネックを引き起こす可能性があります。考えてみてください。
それが役に立てば幸い。
他の人がまだ言及していない点は太字で示されています:
- Cookieはページリクエストごとにサーバーに送信されますが、localStorageは送信されません。つまり、次のことを意味します。
- クライアント側でのみ必要な場合に不要なデータ転送はありません
- ただし、サーバーで値が必要な場合は、ページが読み込まれた後、追加のXmlHttpRequestを使用して値を転送する必要があります
- localStorageの容量ははるかに大きい
- localStorageを実装する多くのブラウザには、無効にするオプションがないか、このオプションがCookieをブロックするオプションよりもはるかに非表示になっているため、無効にするユーザーは少なくなります(Cookieについて知っている多くの人は、この機能が存在することすら知りません) )。
- 私の意見では、localStorageのAPIははるかに使いやすいです
- localStorageにはexpire-headerがありません(ただし、データにexpire-dateを追加して手動で処理することで、これを簡単にエミュレートできます)
ちなみに、sessionStorageを忘れないでください。APIは同じであり、多くの場合、永続的なlocalStorageよりも適切です。
頭に浮かぶ4つのポイントを説明します。
- localStorageは、すべてのリクエストに対応しているわけではありません。それはcient側にとどまります(それは良い、よりスリムな要求です)
- Cookieよりもサイズ制限が大きい(より多く保存できます)
- 値を取得/設定するためのより簡単なAPI(IMO)
- localStorageに格納されている値は、サーバーに伝達されません。サーバー側に保存されている値を認識する必要がある場合は、Cookieを使用してください。
シナリオに最適なものを決定します。
localStorage
は新しく、HTML5の一部であり、古いブラウザはそれをサポートしていない可能性があります。これは単なるクライアント側でもあります。つまり、クライアント側のコードが明示的にサーバーに送信しない限り、サーバーはそれを認識しません。インターフェイスは非常に使いやすく、非常に高速です。
クッキーは普遍的にサポートされており、リクエストごとに自動的にサーバーに送信されます。ただし、Cookieの値には、追加の作業なしでクライアントとサーバーの両方からアクセスできます。JavaScriptからCookieを管理するためのインターフェースは、ライブラリの助けを借りて信じられないほど鈍感です。
値がローカルである必要があるだけで、古いブラウザのサポートが問題にならない場合は、を使用しますlocalStorage
。