Уеб съхранение
Уеб съхранение и 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
Източници
[редактиране | редактиране на кода]- ↑ Opera Web Storage, 2011 http://dev.opera.com/articles/view/web-storage/
- ↑ AndyHume.net, 2011 http://blog.andyhume.net/localstorage-is-not-cookies Архив на оригинала от 2011-04-02 в Wayback Machine.
- ↑ Web Storage.
- ↑ Mozilla Developer Center: DOM Storage Архив на оригинала от 2011-06-29 в Wayback Machine..
- ↑ [1].
- ↑ chrome.storage.local Архив на оригинала от 2013-12-17 в Wayback Machine..
- ↑ John Resig: DOM Storage.
- ↑ Introduction to Web Storage.
- ↑ W3C: Web Storage draft standard Архив на оригинала от 2011-02-01 в Wayback Machine..
- ↑ W3C, 2011 http://dev.w3.org/html5/webstorage/ Архив на оригинала от 2011-02-01 в Wayback Machine.
- ↑ Mozilla Developer Center: DOM Storage Архив на оригинала от 2011-06-29 в Wayback Machine..
- ↑ MSDN: Introduction to DOM Storage.
- ↑ W3C: Web Storage draft standard Архив на оригинала от 2011-02-01 в Wayback Machine..
- ↑ Mozillazine article on disabling Web Storage Objects in about:config.
- ↑ Firefox’s Super Cookies, Cerias, 16 януари 2008
- ↑ "Click&Clean" extension for Google Chrome.
- ↑ "Click&Clean add-on for Mozilla Firefox Архив на оригинала от 2014-09-04 в Wayback Machine..
- ↑ Mozilla add-ons page for „Better Privacy“ Архив на оригинала от 2020-04-26 в Wayback Machine..
- ↑ Homepage of „Better Privacy“, with some further references to blogs and articles Архив на оригинала от 2011-08-23 в Wayback Machine..
- ↑ Google Chrome Browser Client-Side Storage.
Външни препратки
[редактиране | редактиране на кода]- W3C: уеб хранилище
- В MSDN: Въведение към ДОМ хранилище
- Център за разработване на Mozilla: API уеб хранилище
- Opera: Уеб съхранение: по-лесно, по-мощно съхранение на данни на клиента
- BB10: Препратка към HTML5 WebWorks Api
Тази страница частично или изцяло представлява превод на страницата Web storage в Уикипедия на английски. Оригиналният текст, както и този превод, са защитени от Лиценза „Криейтив Комънс – Признание – Споделяне на споделеното“, а за съдържание, създадено преди юни 2009 година – от Лиценза за свободна документация на ГНУ. Прегледайте историята на редакциите на оригиналната страница, както и на преводната страница, за да видите списъка на съавторите.
ВАЖНО: Този шаблон се отнася единствено до авторските права върху съдържанието на статията. Добавянето му не отменя изискването да се посочват конкретни източници на твърденията, които да бъдат благонадеждни. |