Уеб съхранение

от Уикипедия, свободната енциклопедия

Уеб съхранение и DOM съхранение (от английски Document Object Model – „Документен Обектен Модел“) са уеб приложения- софтуерни методи и протоколи, използвани за съхранение на данни в уеб браузър. Уеб хранилището поддържа постоянни хранилища за данни, подобни на „бисквитки“, но със значително разширен капацитет[1] и без информация, съхранявана в заглавието на http-заявка.[2] Има два основни вида уеб хранилище: локално и сесийно, които се държат подобно съответно на постоянните и сесийните „бисквитки“.

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

Характеристики[редактиране | редактиране на кода]

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

Големина на хранилището[редактиране | редактиране на кода]

Уеб хранилище осигурява много по-голям капацитет (5 Mb на източник в Гугъл хроум,[6] Mozilla Firefox,[7] и Opera; 10 MB на складово място в Internet Explorer;[8] 25МБ на източник в BlackBerry 10 – базирани устройства), в сравнение с 4 kb (около 1000 пъти по-малко пространство) при „бисквитките“.

Потребителски интерфейс[редактиране | редактиране на кода]

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

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

Локално и сесийно съхранение[редактиране | редактиране на кода]

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

Интерфейс и модел на данните[редактиране | редактиране на кода]

Уеб съхранението предлага по-добър програмен интерфейс от „бисквитките“, защото излага асоциативен масив модел от данни , където и ключовете и стойностите са низове. Допълнителен Приложно-програмен интерфейс за достъп до структурирани данни се разглежда от работната група за уеб приложения на 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 Хранилището.[10] В повечето браузъри опитът да се съхранява различн тип данни ще доведе до автоматичното им конвертиране в низове. Превръщането в 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 е наречен „уеб хранилище“, но „ДОМ хранилище“ е също често използвано име.[11][12]

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

Управление на Уеб хранилище[редактиране | редактиране на кода]

Съхранението на обекти от уеб хранилището е включно по подразбиране в Mozilla Firefox и SeaMonkey, но може да бъде изключена при настройката на „about:config“ параметъра „dom.storage.enabled“ на грешно.[14]

Mozilla Firefox съхранява всички обекти от уеб хранилището в един-единствен файл, наречен webappsstore.sqlite. Командата sqlite3 може да бъде използвана да покаже елементите съхранявани в нея.[15]

Има достъпни разширения за уеб браузърите Google Chrome и Mozilla Firefox, които позволяват на потребителя да се оправя с уеб съхранението, като „Click&Clean“[16][17] и „BetterPrivacy“, които могат да бъдат конфигурирани да премахват всичко запазено в уеб хранилището редовно.[18][19][20]

Вижте също[редактиране | редактиране на кода]

  • Gears
  • Http бисквитки
  • Indexed Database API
  • Local shared object (т. нар. „Флаш бисквитки“)
  • Web SQL Database

Източници[редактиране | редактиране на кода]

  1. Opera Web Storage, 2011 http://dev.opera.com/articles/view/web-storage/
  2. AndyHume.net, 2011 http://blog.andyhume.net/localstorage-is-not-cookies Архив на оригинала от 2011-04-02 в Wayback Machine.
  3. Web Storage.
  4. Mozilla Developer Center: DOM Storage Архив на оригинала от 2011-06-29 в Wayback Machine..
  5. [1].
  6. chrome.storage.local Архив на оригинала от 2013-12-17 в Wayback Machine..
  7. John Resig: DOM Storage.
  8. Introduction to Web Storage.
  9. W3C: Web Storage draft standard Архив на оригинала от 2011-02-01 в Wayback Machine..
  10. W3C, 2011 http://dev.w3.org/html5/webstorage/ Архив на оригинала от 2011-02-01 в Wayback Machine.
  11. Mozilla Developer Center: DOM Storage Архив на оригинала от 2011-06-29 в Wayback Machine..
  12. MSDN: Introduction to DOM Storage.
  13. W3C: Web Storage draft standard Архив на оригинала от 2011-02-01 в Wayback Machine..
  14. Mozillazine article on disabling Web Storage Objects in about:config.
  15. Firefox’s Super Cookies, Cerias, 16 януари 2008
  16. "Click&Clean" extension for Google Chrome.
  17. "Click&Clean add-on for Mozilla Firefox Архив на оригинала от 2014-09-04 в Wayback Machine..
  18. Mozilla add-ons page for „Better Privacy“ Архив на оригинала от 2020-04-26 в Wayback Machine..
  19. Homepage of „Better Privacy“, with some further references to blogs and articles Архив на оригинала от 2011-08-23 в Wayback Machine..
  20. Google Chrome Browser Client-Side Storage.

Външни препратки[редактиране | редактиране на кода]

  Тази страница частично или изцяло представлява превод на страницата Web storage в Уикипедия на английски. Оригиналният текст, както и този превод, са защитени от Лиценза „Криейтив Комънс – Признание – Споделяне на споделеното“, а за съдържание, създадено преди юни 2009 година – от Лиценза за свободна документация на ГНУ. Прегледайте историята на редакциите на оригиналната страница, както и на преводната страница, за да видите списъка на съавторите. ​

ВАЖНО: Този шаблон се отнася единствено до авторските права върху съдържанието на статията. Добавянето му не отменя изискването да се посочват конкретни източници на твърденията, които да бъдат благонадеждни.​