Съхранението от страна на клиента е от съществено значение за уеб приложенията. Може да не е толкова бронирано като хранилището от страна на сървъра, но без него уеб приложенията не биха могли да внедрят много съвременни функции. Всички видове функции зависят от хранилището от страна на клиента, от сесии в игри до колички за пазаруване в уебсайтове за електронна търговия.
Съхранението от страна на клиента също позволява на уеб приложенията да реализират ориентирана към поверителността архитектура. Можете да го използвате, за да гарантирате, че чувствителните данни никога не напускат устройството на потребителя.
Какво е съхранение от страна на клиента?
В уеб разработката съхранението от страна на клиента се отнася до различните начини, по които уеб браузърите могат да съхраняват данни. След това приложение може да използва тези данни, за да предостави функционалност на потребителите. Съхранението от страна на клиента е критично поради няколко причини:
- Данните, съхранявани на клиента, са значително по-бързи за достъп и вашето приложение може да има достъп до тях без интернет.
- Съхранението от страна на клиента улеснява вашето приложение да запомни предпочитанията на всеки потребител.
- Съхраняването на някои данни за постоянно на клиента улеснява защитата на поверителността на потребителите.
- Съхраняването на всички данни на приложението на сървъра е скъпо, особено в големи мащаби.
Има няколко различни форми на съхранение от страна на клиента, които можете да използвате във вашите уеб приложения.
Бисквитки
Бисквитката на браузъра е част от данни за ключ/стойност, съхранявани като низ на вашия компютър. Браузърите изпращат всички бисквитки за определен сайт към сървъра на сайта при всяка заявка. Бисквитките бяха първият (и за известно време единствен) тип съхранение от страна на клиента.
Няма официално ограничение за размера на бисквитката, но отделните браузъри поставят различни ограничения за размера и броя на бисквитките, които можете да зададете. The RFC 6265 Раздел 6.1 посочва следните минимални възможности за бисквитки, които браузърите (потребителски агенти) трябва да предоставят:
Практическите реализации на потребителски агенти имат ограничения за броя и размера на бисквитките, които могат да съхраняват. Потребителските агенти за обща употреба ТРЯБВА да предоставят всяка от следните минимални възможности:
- Най-малко 4096 байта на бисквитка (измерено чрез сумата от дължината на името, стойността и атрибутите на бисквитката).
- Най-малко 50 бисквитки на домейн.
- Най-малко 3000 бисквитки общо.
Бисквитките могат да останат в браузъра за различно време. Някои изтичат в края на страница сесия, а някои имат произволни дати на изтичане, които могат да се простират до месеци в бъдещето.
Браузърите създават сесия на страница, когато отворите нов раздел, и я прекратяват, когато затворите раздела или браузъра. Ако презаредите или опресните страницата, браузърът няма да прекрати сесията на страницата.
Използване на бисквитки
Бисквитките са най-подходящи за съхраняване на малки части от данни, които сървърът често трябва да прочете или промени. Защо?
- Бисквитките се прикачват автоматично към всички мрежови заявки
- Бисквитките могат да съхраняват само малки количества низови данни.
Можете да използвате бисквитки, за да идентифицирате потребител (като идентификатор на сесия), да запишете посещение на страница с цел маркиране или да съхраните високия резултат на игра.
LocalStorage
Подобно на бисквитка, localStorage е хранилище за ключ/стойност, което съхранява низови данни. Въпреки че и двата типа съхранение са подобни, localStorage и бисквитките се различават по няколко начина:
- LocalStorage зависи от JavaScript.
- Данните в localStorage се намират предимно в браузъра. Трябва умишлено да го изпратите на сървъра, вместо браузърът да го изпраща при всяка заявка.
- LocalStorage няма срок на годност. Той продължава да съществува на клиента, докато разработчикът не го изтрие с JavaScript или потребителят изчисти хранилището на браузъра си.
- LocalStorage има много по-голям капацитет за съхранение. The WHATWG спец не посочва твърда граница, но според Уикипедия, минималният размер на localStorage сред основните браузъри е 5 MB:
Браузърите ограничават бисквитките до 4 килобайта. Уеб съхранението осигурява много по-голям капацитет за съхранение:
- Opera 10.50+ позволява 5 MB
- Safari 8 позволява 5 MB
- Firefox 34 позволява 10 MB
- Google Chrome позволява 10 MB на източник
- Internet Explorer позволява 10 MB на място за съхранение
Случаи на употреба за LocalStorage
LocalStorage е идеален за съхраняване на голямо количество данни, които сървърът рядко трябва да използва. Това може да са потребителските настройки на приложението, подробности за конфигурацията на темата или данните в наскоро попълнен формуляр. Това е така, защото localStorage има много по-голям лимит за съхранение от бисквитките, но трябва да положите допълнителни усилия, за да изпратите данните му на сървъра.
Ако съхранявате данните като JSON, можете да съхранявате разумно сложни данни с помощта на localStorage, въпреки че може да съхранява само низове.
LocalStorage е уязвим към XSS атаки, така че не трябва да съхранявате чувствителни клиентски данни в него.
SessionStorage
SessionStorage е хранилище за ключ/стойност, което работи почти същото като localStorage, с изключение на едно нещо. Съхранените данни се запазват само за продължителността на страницата.
Случаи на употреба за SessionStorage
Можете да използвате SessionStorage, за да съхранявате същия тип данни като localStorage, но само когато не е необходимо данните да се съхраняват след сесия на страница.
Индексирана база данни
IndexedDB е мощен API за браузър за съхраняване на големи количества структурирани данни. Това е транзакционна, обектно-ориентирана база данни, която съхранява данни в двойки ключ/стойност.
Ако имате работа с по-малки количества данни, localStorage/sessionStorage е по-добрият и по-лесен избор. За съжаление, те са ограничени от капацитета си за съхранение и факта, че могат да съхраняват само низови данни. IndexedDB не само позволява съхраняването на различни видове данни, включително файлове/двоични данни, но също така може да съхранява много повече данни. IndexedDB също конструира индекси на своето съдържание, за да позволи бързо търсене в базата данни.
Случаи на употреба за IndexedDB
IndexedDB е по същество NoSQL база данни в браузъра и може да съхранява много големи количества данни. Всеки случай на употреба, който изисква съхраняване на над 10 MB данни, е подходящ за IndexedDB.
За разлика от другите форми на съхранение на браузъра, IndexedDB не се ограничава до съхраняване на низове. IndexedDB може да съхранява данни от всички стандартни типове JavaScript. Ако създавате уеб приложение, което да работи предимно офлайн, можете да използвате IndexedDB, за да съхранявате всички данни на приложението.
Съхранението от страна на клиента е гъвкаво и мощно
Терминът съхранение от страна на клиента се отнася до съхраняване на данни от приложението в браузъра. Съхранението от страна на клиента е от съществено значение за функционирането на повечето съвременни уеб приложения. Има различни видове съхранение от страна на клиента: бисквитки, локално/сесийно хранилище и IndexedDB.
Всички типове хранилища на браузъра имат различни ограничения за капацитета и типа данни, които могат да съхраняват. Бисквитките са най-ограниченият тип, local/sessionStorage е най-удобният, а IndexedDB е най-мощният.