localStorage — отличное место для хранения настроек приложения, которые вы хотели бы сохранять между сеансами (в отличие от sessionStorage) и не передавать на сервер (в отличие от файла cookie). Раньше, чтобы избежать ненужной передачи настроек на основе файлов cookie на сервер, вам приходилось использовать другой субдомен только для файлов cookie.
Следующим важным преимуществом является то, что хотя под капотом localStorage использует SQLite, все значения localStorage кэшируются в памяти браузером. Таким образом, в то время как с API базы данных каждый оператор executeSql
является асинхронным и требует функции обратного вызова для получения данных, localStorage полностью синхронен, поскольку он извлекает данные прямо из кеша памяти. Это означает, что хранение и извлечение больших фрагментов данных из localStorage происходит очень быстро.
То, как был реализован объект localStorage, также делает его очень простым и интуитивно понятным для использования в вашем коде. Знаете ли вы, например, что вместо использования getItem
и setItem
вы можете использовать localStorage, как и любой другой объект?
localStorage.someKeyName = 'someValue';
alert(localStorage.someKeyName); // alerts 'someValue'
delete localStorage.someKeyName; // removes the key
Сравните это с объемом кода, необходимого для извлечения одной записи из базы данных:
var db = openDatabase('myDb', '', '', 1024);
db.compatibleReadTransaction(function (t) {
t.executeSql('SELECT someField FROM someTable WHERE somePrimaryKey = 1', function(t, r) {
console.log(r.rows.item(0));
}, function () {
// error
});
});
Реальный пример
Веб-приложение Guardian по адресу g.joeblade.com сохраняет все содержимое статей в localStorage. Это означает, что загрузка страницы происходит мгновенно. Если бы контент хранился в базе данных, это было бы не так быстро, поскольку каждая статья должна была бы извлекаться из базы данных асинхронно, а затем возникали накладные расходы на вызов механизма запросов SQLite, выполнение обратного вызова и т. д. на.
25.08.2011