HTML5 - localStorage, Cookies и SQL - PullRequest
       29

HTML5 - localStorage, Cookies и SQL

2 голосов
/ 25 августа 2011

Судя по большому количеству результатов поиска, которые я видел в SO, функция localStorage в HTML5, по-видимому, полезна по сравнению с файлами cookie, только если вы заинтересованы в хранении больших порций данных, которые не нужно передавать на сервер. ( Локальное хранилище против файлов cookie )

Мне трудно обернуть голову, как / почему кто-то будет использовать эту функцию. Может ли кто-нибудь предоставить ссылку на пример из реальной жизни, который показывает, насколько выгодно localStorage?

Кроме того, был ли когда-нибудь случай, когда localStorage использовался бы для ... скажем ... записи определенной информации в базу данных SQL?

Извините, если это дубликат множества вопросов HTML5 на этом сайте. Я прочитал несколько, и никто из них не ответил на мои вопросы полностью. Заранее спасибо!

1 Ответ

6 голосов
/ 25 августа 2011

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, выполнением обратного вызова и т. Д.на.

...