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

от Уикипедия, свободната енциклопедия
Направо към: навигация, търсене

Уеб съхранение и 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

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

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

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