Я тестирую разные браузеры на то, как они читают / записывают большие объемы данных в / из локального хранилища Примерные данные - это 1500 записей о клиентах с некоторым набором данных для каждого (имя, фамилия, некоторые идентификаторы для их местоположения, типа и т. Д.). Тестовое приложение построено на платформе GWT.
И что я заметил, так это то, что IE8, IE9, Chrome улучшили свою производительность как минимум на 30% после перехода к загрузке данных из локального хранилища (а не с веб-сервера). И только Firefox (5.0) - тот, кто ухудшил результаты (примерно на 30% медленнее). Удаленный веб-сервер использовался для проведения экспериментов.
Разница между браузерами практически не видна на небольших порциях данных (100-200 записей), и итоговое время также должно быть одинаковым. Но большие суммы раскрывают проблему.
Я нашел упоминание об этой проблеме на сайте поддержки Mozilla - https://support.mozilla.com/en-US/questions/750266
Но до сих пор нет решения или обходного пути, как это исправить.
Профилирование Javascript показывает, что вызовы функций реализованы в классе GWT StorageImpl.java
function $key(storage, index){
return index >= 0 && index < $wnd[storage].length ?
$wnd[storage].key(index) : null;
}
взять львиную долю времени во время казни. Что на самом деле является вызовом storage.getItem (ключ) в GWT.
Чтобы избежать таких частых вызовов, я бы предпочел, например, один вызов для перевода содержимого хранилища на карту, и это могло бы помочь мне сэкономить время, затрачиваемое на операции ввода-вывода кэша Firefox (если таковые имеются). Но интерфейс хранилища (http://dev.w3.org/html5/webstorage/#storage-0) содержит только функцию getItem () для получения любого содержимого из хранилища.
Есть мысли о том, как заставить Firefox работать быстрее ?
P.S. Может быть, кому-то это пригодится: я нашел содержимое локального хранилища FF с помощью менеджера аддона SQLite и загружаю базу данных webappstore.sqlite из раскрывающегося списка встроенных баз данных по умолчанию.