4

ユーザーのUIに関連するデータを含むオブジェクトがあります。今のところ、データはjsonの形式で提供されます。私は、JSON.parseを実行してオブジェクトを評価し、それに応じてHTMLを生成します。

json文字列をローカルセッションストレージ(ローカルストレージではなく)に保存し、UIを新しいHTMLで更新する必要があるたびに呼び出すことを考えています。このように、ユーザーが同じブラウザで別のページを開いた場合、すべてのページのすべてのHTMLは同じになります。

今のところ、オブジェクトはメモリに保存されており、UIでのユーザーのアクションとオブジェクトの変更の間の相互作用は高速に実行されます。シリアル化してセッションストレージに保存すると、ブラウザはデータをRAMまたはハードドライブに保存してページの速度を低下させますか?

4

2 に答える 2

24

私はこの小さなテストFF32、Chrome 37、IE11を実行しました。楽しみのためだけに。

console.clear();
var s = new Date();
for(var i=0; i < 100000; i++)
{
  sessionStorage.item = i.toString();
}
var e = new Date();
console.log("session: " + (e - s) + " ms");

s = new Date();
var mem;
for(var i=0; i < 100000; i++)
{
  mem = i.toString();
}
e = new Date();
console.log("mem: " + (e - s) + " ms");

s = new Date();
for(var i=0; i < 100000; i++)
{
  localStorage.item = i.toString();
}
e = new Date();
console.log("local: " + (e - s) + " ms");
console.log('Done');

FF

  • セッション:830ミリ秒
  • mem:92ミリ秒
  • ローカル:1156ミリ秒

クロム

  • セッション:2852ミリ秒
  • mem:147ミリ秒
  • ローカル:2893ミリ秒

IE

  • セッション:977ミリ秒
  • mem:81ミリ秒
  • ローカル:15062ミリ秒

Safari(別のデバイス)

  • セッション:380ミリ秒
  • mem:21ミリ秒
  • ローカル:248ミリ秒

テスト終了後、ブラウザのウィンドウが数秒間フリーズし、CPU +ディスクアクティビティが増加しました(localStorageが原因)。

于 2014-10-08T20:02:43.437 に答える
2

html5仕様から取得:

ユーザーエージェントは再起動後のセッションの再開をサポートしている可能性があるため、ブラウジングコンテキストの存続期間は、実際のユーザーエージェントプロセス自体の存続期間とは無関係である可能性があります。

つまり、ブラウザはこの情報をディスクに保存する可能性があります。

パフォーマンスは、ブラウザ固有およびOS固有の実装に依存します。ただし、この情報を取得することがボトルネックになる可能性はほとんどありません。

于 2011-12-06T18:33:05.200 に答える