хранение и производительность сеанса - PullRequest
3 голосов
/ 06 декабря 2011

У меня есть объект, который содержит данные относительно пользовательского интерфейса пользователя.На данный момент данные поступают в виде json, я запускаю JSON.parse, чтобы оценить объект и сгенерировать соответствующий HTML.

Я думаю о сохранении строки json в локальном хранилище сеанса (нелокальное хранилище) и вызывая его каждый раз, когда пользовательский интерфейс должен быть обновлен с новым HTML.Таким образом, если пользователь откроет другую страницу в том же браузере, весь HTML-код всех страниц будет одинаковым.

На данный момент объект хранится в памяти и взаимодействия между действиями пользователя наПользовательский интерфейс и модификации объекта выполняются быстро.Если я сериализую его и сохраню в хранилище сеансов, браузеры сохранят данные в ОЗУ или на жестком диске и замедлят страницу?

Ответы [ 2 ]

17 голосов
/ 09 октября 2014

Я сделал этот небольшой тест FF 32, Chrome 37, IE 11. Просто для удовольствия.

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 мс

Chrome

  • сеанс: 2852 мс
  • mem: 147 мс
  • местный: 2893 мс

IE

  • сеанс: 977 мс
  • mem: 81 мс
  • местный: 15062 мс

После завершения теста окно браузера зависло на несколько секунд и увеличилась активность CPU + Disk (вызвано localStorage).

2 голосов
/ 06 декабря 2011

Взято из спецификации html5:

Время жизни контекста просмотра может не зависеть от времени жизни самого процесса пользовательского агента, поскольку пользовательский агент может поддерживать возобновление сеансов после перезапуска.

Это означает, что браузеры могут хранить эту информацию на диске.

Производительность будет зависеть от реализации браузера и ОС.Однако получение этой информации вряд ли станет узким местом.

...