API истории HTML5. Каков максимальный размер объекта состояния?
Метод pushState
принимает объект состояния. В документах Firefox говорится, что максимальный размер этого объекта составляет 640 КБ. Определено ли в спецификациях, какой минимальный максимальный размер, который может реализовать браузер? Могу ли я разумно ожидать, что основные браузеры предоставят мне по крайней мере 100 КБ?
EDIT: я протестировал его с помощью Chrome, и он все еще работал над объектами состояния более 1 МБ.
Ответы
Ответ 1
Нет. Нормативный документ здесь http://www.whatwg.org/specs/web-apps/current-work/multipage/history.html#dom-history-pushstate, и он даже не упоминает ограничение размера данных. Однако предлагается другой предел:
Пользовательские агенты могут ограничить количество объекты состояния, добавленные в сеанс история на страницу.
Как вы можете видеть на этом примере, спецификация обычно избегает упоминания каких-либо жестких ограничений и оставляет их на усмотрение разработчиков браузеров. Поэтому, даже если спецификация будет пересмотрена в какой-то момент в будущем, чтобы рассмотреть возможность ограничения размера данных, она вряд ли даст вам реальное число. Вместо этого он будет "достаточно большим для случаев общего использования".
Ответ 2
В спецификации не указан лимит, однако у каждого браузера есть свои ограничения.
Firefox хорошо документирован, и, как вы сказали, это 640kB ( "столько оперативной памяти, сколько кому-либо понадобится" ).
Я не мог найти Chrome или Internet Explorer в любом месте, но некоторые быстрые тесты показывают:
Chrome работает как минимум до 10 МБ (и, возможно, далее),
IE превзошел лимит на 1 МБ (в IE11, который мне все-таки удобен).
Итак, подведем итоги для людей будущего:
Ограничение размера объекта history.state: 640kB
для Firefox, 1MB
для Internet Explorer 11 и не менее 10Mb
для Chrome.
EDIT: проверены версии: IE: 11, Chrome: 33, Firefox: не имеет значения, поскольку они документируют максимальный размер для MDN для вас:).
Ответ 3
видеть только MDN, сообщает, что FireFox накладывает ограничение на размер до 640K, не знает других браузеров.
https://developer.mozilla.org/en-US/docs/DOM/Manipulating_the_browser_history