Локальное хранилище против файлов cookie

Еще одна версия, использующая reduce() method :

var arr1 = new Array({name: "lang", value: "English"}, {name: "age", value: "18"});
var arr2 = new Array({name : "childs", value: '5'}, {name: "lang", value: "German"});

var arr = arr1.concat(arr2).reduce(function(prev, current, index, array){ 
   
   if(!(current.name in prev.keys)) {
      prev.keys[current.name] = index;
      prev.result.push(current);   
   } 
   else{
       prev.result[prev.keys[current.name]] = current;
   }  

   return prev;
},{result: [], keys: {}}).result;
  
document.getElementById("output").innerHTML = JSON.stringify(arr,null,2);    

936
задан wvdz 8 October 2014 в 22:05
поделиться

2 ответа

Cookies и локальное хранилище служат разным целям. Cookies в первую очередь предназначены для чтения на стороне сервера, локальное хранилище может быть прочитано только на стороне клиента. Итак, вопрос в том, кому нужны эти данные в вашем приложении - клиенту или серверу?

Если клиенту (вашему JavaScript), то, конечно, переключайтесь. Вы теряете пропускную способность, отправляя все данные в каждом заголовке HTTP.

Если это ваш сервер, то локальное хранилище не так полезно, потому что вам придется как-то пересылать данные (с помощью Ajax, скрытых полей формы или чего-то еще). Это может быть приемлемо, если серверу нужно только небольшое подмножество всех данных для каждого запроса.

Однако в любом случае вы захотите оставить сессионный cookie как cookie.

Что касается технической разницы, а также моего понимания:

  1. Помимо того, что это старый способ сохранения данных, Cookies дают вам ограничение в 4096 байт (4095, на самом деле) - это на одну Cookie. Локальное хранилище может достигать 5MB на домен - SO Question также упоминает его

  2. localStorage является реализацией Storage интерфейса. Он хранит данные с без срока действия, и очищается только через JavaScript или очистку кэша браузера / локально хранимых данных - в отличие от истечения срока действия cookie.

1213
ответ дан 19 December 2019 в 20:21
поделиться

Что ж, скорость локального хранилища во многом зависит от браузера, который использует клиент, а также от операционной системы. Chrome или Safari на Mac могут быть намного быстрее, чем Firefox на ПК, особенно с новыми API. Как всегда, тестирование - ваш друг (тестов я не нашел).

Я действительно не вижу большой разницы в использовании файлов cookie и локального хранилища. Кроме того, вам следует больше беспокоиться о проблемах совместимости: не все браузеры даже начали поддерживать новые API-интерфейсы HTML5, поэтому файлы cookie будут вашим лучшим выбором для скорости и совместимости.

7
ответ дан 19 December 2019 в 20:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: