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

API истории HTML5. Каков максимальный размер объекта состояния?

Метод pushState принимает объект состояния. В документах Firefox говорится, что максимальный размер этого объекта составляет 640 КБ. Определено ли в спецификациях, какой минимальный максимальный размер, который может реализовать браузер? Могу ли я разумно ожидать, что основные браузеры предоставят мне по крайней мере 100 КБ?

EDIT: я протестировал его с помощью Chrome, и он все еще работал над объектами состояния более 1 МБ.

4b9b3361

Ответ 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 для вас:).