Уеб съхранение и DOM съхранение (от английски Document Object Model – „Документен Обектен Модел“) са уеб приложения- софтуерни методи и протоколи, използвани за съхранение на данни в уеб браузър. Уеб хранилището поддържа постоянни хранилища за данни, подобни на „бисквитки“, но със значително разширен капацитетOpera Web Storage, 2011 http://dev.opera.com/articles/view/web-storage/ и без информация, съхранявана в заглавието на http-заявка.AndyHume.net, 2011 http://blog.andyhume.net/localstorage-is-not-cookies  Има два основни вида уеб хранилище: локално и сесийно, които се държат подобно съответно на постоянните и сесийните „бисквитки“.

Уеб хранилището е стандартизирано от консорциума World wide web (W3С). Първоначално той е бил част от HTML5 спецификацията, но сега е в отделна спецификация.Web Storage.  Поддържа се от Internet Explorer 8, Mozilla – базирани браузъри (Firefox 2+, официално от 3.5),Mozilla Developer Center: DOM Storage . Сафари 4, Гугъл хроум 4 (сесийното съхранение е от 5), и Opera 10. От 14 март 2011 Opera и Internet Explorer 9 също поддържат този вид съхранение. .

Характеристики Уеб съхранението може да бъде разгледано като подобрение на „бисквитките“. Въпреки това, то се различава от тях в няколко ключови момента.

Големина на хранилището Уеб хранилище осигурява много по-голям капацитет (5 Mb на източник в Гугъл хроум,chrome.storage.local . Mozilla Firefox,John Resig: DOM Storage. и Opera; 10 MB на складово място в Internet Explorer;Introduction to Web Storage. 25МБ на източник в BlackBerry 10 – базирани устройства), в сравнение с 4 kb (около 1000 пъти по-малко пространство) при „бисквитките“.

Потребителски интерфейс За разлика от „бисквитките“, които могат да бъдат достигнати както през сървъра, така и от клиентска страна, уеб съхранението попада строго в рамките на компетентността на клиентските скриптове.

Данните от уеб хранилището не се изпращат автоматично на сървъра при всяка HTTP заявка и сървъра не може директно да връща към уеб хранилището. Въпреки това, който и да е от тези ефекти може да бъде постигнат с определени клиентски скриптове, позволявайки фина настройка на желаните взаимодействия със сървъра.

Локално и сесийно съхранение Уеб съхранението предлага две различни хранилища – локално и сесийно, които се различават по обхват и дълготрайност. Данни, поставени в локалното хранилище са комбинирани по източник (комбинация от протокол, име на хост и порт номер, както е определено в принципа на еднаквия източник)(данните са на разположение на всички скриптове, зареждани от страници със същия източник, който преди е съдържал данните) и се запазват след като брауъра е затворен. В сесийното хранилище се комбинира per-origin-per-window и дълготрайността му е огрничена до затварянето на прозореца. Сесийното съхранение има за цел да позволява на различни инстанции от едно и също уеб приложение да работят в отделни прозорци без да взаимодействат помежду си (действие, което не е добре поддържано от „бисквитките“).W3C: Web Storage draft standard .

Интерфейс и модел на данните Уеб съхранението предлага по-добър програмен интерфейс от „бисквитките“, защото излага асоциативен масив модел от данни , където и ключовете и стойностите са низове. Допълнителен Приложно-програмен интерфейс за достъп до структурирани данни се разглежда от работната група за уеб приложения на W3C.

Употреба Браузърите, които поддържат уеб съхранението, имат глобални променливи sessionStorage и localstorage с , декларирани на нивото на прозореца. Представеният JavaScript код може да бъде използван от тези браузъри да предизвика действието уеб съхранение: 

sessionStorage // Запазва стойност в браузъра за продължителността на сесията sessionStorage.setitem('key','value');

// Връща стойност (изтрива се след затварянето на браузъра и повторно му отваряне) alert(sessionStorage.getitem('key'));

localstorage // Запазва стойност в браузъра извън продължителността на сесията localstorage.setitem('key', 'value');

// Връща стойност (остава дори след затварянето на браузъра и повторното му отваряне) alert(localStorage.getItem('key'));

Достъп до данни от настоящо преглеждания домейн Следващият код може да бъде използван за извличне на всички стойности, съхранявани в локалното хранилище за понастоящем преглеждания домейн (домейна на уеб страницата, която бива разглеждана).

Този JavaScript код може да бъде изпълен с помощта на инструменти за разработка, достъпни в повечето модерни браузъри като Инструменти за разработка на IE, Инструменти за разработка на Chrome, Firebug разширенито в браузъра Firefox или Opera Dragonfly:var output = "LOCALSTORAGE DATA:\n------------------------------------\n"; if (localStorage) { if (localStorage.length) { for (var i = 0; i < localStorage.length; i++) { output += localStorage.key(i) + ': ' + localStorage.getItem(localStorage.key(i)) + '\n'; } } else { output += 'There is no data stored for this domain.'; } } else { output += 'Your browser does not support local storage.' } console.log(output);

Типове данни Само низове могат да бъдат съхранявани от API Хранилището.W3C, 2011 http://dev.w3.org/html5/webstorage/ В повечето браузъри опитът да се съхранява различн тип данни ще доведе до автоматичното им конвертиране в низове. Превръщането в JSON (JavaScript Object Notation), обаче, дава възможност за ефективно съхранение на JavaScript обеки.// Запазва обект вместо низ localStorage.setItem('key', {name: 'value'}); alert(typeof localStorage.getItem('key')); // низ

// Запазва цяла число вместо низ localStorage.setItem('key', 1); alert(typeof localStorage.getItem('key')); // низ

// Запазва обект, използвайки JSON localStorage.setItem('key', JSON.stringify({name: 'value'})); alert(JSON.parse(localStorage.getItem('key')).name); // стойност

Терминология Проектът на W3C е наречен „уеб хранилище“, но „ДОМ хранилище“ е също често използвано име.Mozilla Developer Center: DOM Storage .MSDN: Introduction to DOM Storage.

Символите „ДОМ“ в ДОМ хранилището не се отнасят буквално към Документия обектен модел. Според W3C, „терминът ДОМ се използва за обозначаване на набор от API, достъпни за скриптове в Интернет приложения, и не предполага задължителното наличие на реални обекти на документи“.W3C: Web Storage draft standard .

Управление на Уеб хранилище Съхранението на обекти от уеб хранилището е включно по подразбиране в Mozilla Firefox и SeaMonkey, но може да бъде изключена при настройката на „about:config“ параметъра „dom.storage.enabled“ на грешно.Mozillazine article on disabling Web Storage Objects in about:config.

Mozilla Firefox съхранява всички обекти от уеб хранилището в един-единствен , наречен webappsstore.sqlite. Командата sqlite3 може да бъде използвана да покаже елементите съхранявани в нея.Firefox’s Super Cookies, Cerias, 16 януари 2008

Има достъпни разширения за уеб браузърите Google Chrome и Mozilla Firefox, които позволяват на потребителя да се оправя с уеб съхранението, като „Click&Clean“"Click&Clean" extension for Google Chrome. "Click&Clean add-on for Mozilla Firefox . и „BetterPrivacy“, които могат да бъдат конфигурирани да премахват всичко запазено в уеб хранилището редовно.Mozilla add-ons page for „Better Privacy“ .Homepage of „Better Privacy“, with some further references to blogs and articles .Google Chrome Browser Client-Side Storage.

Вижте също Gears Http бисквитки Indexed Database API Local shared object (т. нар. „Флаш бисквитки“) Web SQL Database

Източници

Външни препратки W3C: уеб хранилище В MSDN: Въведение към ДОМ хранилище Център за разработване на Mozilla: API уеб хранилище Opera: Уеб съхранение: по-лесно, по-мощно съхранение на данни на клиента BB10: Препратка към HTML5 WebWorks Api

Категория:Стандарти на W3C