Краткая история попыток реализации локального хранилища до HTML5

Автор: Евгений Рыжков и Татьяна Головко Дата публикации: 28.03.2011

Сначала был только Internet Explorer. Ну, или, по крайней мере, Microsoft пытался всех в этом убедить. Во времена первых браузерных войн Microsoft добавила своему браузеру кучу новых возможностей. Одной из них была DHTML Behaviors и, в частности, userData.

userData дает возможность веб-странице хранить до 64Kb данных для одного домена, в виде иерархической структуры на основе XML. Таких доверенных доменов могло быть до 10, т.е. под это дело выделялось всего 640Kb. И кому этого должно было хватить?! IE не предоставлял пользователю права выбора, каким сайтам использовать userData и не мог увеличить количество доверенных доменов.

В 2002 году Adobe внедрила функцию в Flash 6 с неудачным и вводившим в заблуждение названием "Flash cookies". В среде разработки эта функция называется Local Shared Objects (LSO). Она позволяла флеш объекту сохранять до 100kb данных для одного домена. В 2005 Brad Neuberg разработал ранний прототип моста Flash-to-JavaScript под названием AJAX Massive Storage System (AMASS), но он был ограничен некоторыми особенностями Flash. С появлением ExternalInterface во Flash 8 доступ к LSO с помощью Javascript стал на порядок проще и быстрее. Brad переписал AMASS и интегрировал его с популярным Dojo Toolkit под именем dojox.storage. Это решение дало почти каждому домену возможность хранить 100Kb данных «на шару». Кроме того, пользователю предлагается возможность увеличить объем хранимых данных для каждого домена (до 1Mb, 10Mb и больше).

В 2007 году Google начал разработку Gears — бесплатного плагина, который добавляет возможности браузеру. Gears предоставляет API для встроенной SQL базы данных на основе SQLite. После получения разрешения от пользователя (разрешение спрашивается 1 раз), домен получает возможность хранить неограниченное число данных в базе данных.

В то же время, Brad Neuberg продолжал усовершенствовать dojox.storage внедрив единый интерфейс для всех этих плагинов и API. В 2009 году dojox.storage уже может автоматически определить Adobe Flash, Gears, Adobe AIR и раннюю реализацию HTML5 хранилища, которая доступна в свежих версиях Firefox.

Итак, мы имеем один браузер, который поддерживает хранилище по стандартам и остальные, которым нужны сторонние решения в виде тех или иных плагинов. Даже несмотря на героические усилия разработчиков dojox.storage им крайне тяжело поддерживать все возможные API, ограничения и различные взаимодействия с пользователем. Эти проблемы и должен решить HTML5 — предоставить стандартизированный API, со встроенной поддержкой браузерами без использования дополнительных плагинов.

Куда дальше