Подтвердить что ты не робот

HTML localStorage setItem и производительность getItem около 5 МБ лимита?

Я создавал небольшой проект, который использовал HTML localStorage. Хотя я нигде не был близок к пределу 5 МБ для localStorage, я решил сделать стресс-тест в любом случае.

По сути, я загрузил объекты данных в один объект LocalStorage, пока он не был чуть ниже этого предела, и должен запросить установку и получение различных элементов.

Затем я приурочил выполнение setItem и getItem неофициально с использованием объекта Date javascript и обработчиков событий (привязанные get и set to buttons в HTML и просто нажал = P)

Производительность была ужасающей, с запросами от 600 мс до 5000 мс, а использование памяти приближалось к 200 МБ в более тяжелых случаях. Это было в Google Chrome с одним расширением (Google Speed ​​Tracer) на MacOSX.

В Safari это в основном > 4000 м. все время.

Firefox был неожиданностью, почти ничего не превышал 150 мс.

Все это было сделано в основном бездействующим состоянием - нет возможности YouTube (Flash), а не много вкладок (ничего, кроме Gmail), и без каких-либо приложений, кроме фонового процесса + Браузер. Как только возникла проблема с интенсивной памятью, localStorage также замедлилась. FWIW, я работаю в конце 2008 года Mac → 2.0Ghz Duo Core с 2 ГБ оперативной памяти DDR3.

===

Итак, вопросы:

  • Кто-нибудь выполнил сравнительные тесты против localStorage и установил для разных разных значений ключа и значения и в разных браузерах?
  • Я предполагаю, что большая разница в латентности и использовании памяти между Firefox, а остальное - проблема Gecko vs Webkit. Я знаю, что ответ можно найти, погрузившись в эти базы кода, но я определенно хотел бы узнать, сможет ли кто-нибудь еще объяснить соответствующие подробности о реализации localStorage на этих двух машинах, чтобы объяснить огромную разницу в эффективности и латентности в браузерах?

К сожалению, я сомневаюсь, что мы сможем решить его, но чем ближе можно получить, тем меньше понимание ограничений браузера в его текущем состоянии.

Спасибо!

4b9b3361

Ответ 1

Браузер и версия становятся основной проблемой здесь. Дело в том, что, хотя есть так называемые браузеры на основе Webkit, они добавляют свои собственные исправления. Иногда они попадают в основной репозиторий Webkit, иногда они этого не делают. Что касается версий, браузеры всегда двигают цели, поэтому этот тест может быть совершенно иным, если вы используете бета-версию или ночную сборку.

Тогда есть общий прецедент. Если ваш прецедент не является нормой, проблемы будут не такими очевидными, и это менее вероятно, чтобы их заметили и обратились. Даже если есть исправления, у поставщиков браузеров есть много проблем для решения, поэтому есть шанс, что он настроен для другой сборки (опять же, ночные сборки могут давать разные результаты).

Честно говоря, лучший способ действий состоял в том, чтобы обсудить эти результаты в соответствующем списке/форуме рассылки браузера, если он еще не был рассмотрен. Люди будут с большей вероятностью проводить тестирование и видеть, соответствуют ли результаты.