Как сохранить длинную строку в файлах cookie Js?

#javascript #cookies #js-cookie

#javascript #файлы cookie #js-cookie

Вопрос:

Привет, я работаю с JsCookies, он работает хорошо, но я столкнулся с проблемой

Всякий раз, когда я сохраняю короткую строку в файлах cookie, она работает нормально, но недостатком является то, что я не могу хранить длинные строки в файлах cookie

например

Это работает нормально = Cookies.set('Coo', 'string', { expires: 1 })

Но сталкиваюсь с проблемой, когда когда-либо пытаюсь сохранить данные в формате JSON (большая строка)

 Cookies.set('foo', JSON.stringify(result))
 

Пожалуйста, помогите

Ответ №1:

Файлы cookie не должны использоваться для хранения больших объемов данных. Они должны использоваться для таких вещей, как авторизация пользователя и параметры конфигурации (которые, все вместе, не составляют большой полезной нагрузки). Используйте файлы cookie, когда данные актуальны как для клиента, так и для сервера при каждом запросе.

Большие полезные данные в файлах cookie не следует отправлять с каждым запросом; это потребовало бы больших затрат пропускной способности и было бы ненужным. Вместо этого либо:

  • Если серверу не нужна информация, и вы просто используете ее для хранения на стороне клиента, вместо этого используйте локальное хранилище
  • Если серверу действительно нужна информация, отправьте данные на сервер один раз (или, по крайней мере, отправьте их на сервер в отдельном запросе, но не в файлах cookie) — например, через XHR.
  • Если у сервера будет информация, и она нужна клиенту, отправьте данные клиенту другим способом, вместо того, чтобы связывать их внутри файла cookie. Например, вы можете отправить данные, вставив их в HTML-ответ, отправляемый клиенту, или попросив клиента сделать сетевой запрос на сервер, и сервер ответит данными в формате JSON.

Ответ №2:

Вы не можете хранить в файлах cookie более 4k байт, но для этого есть альтернатива

 // Store
localStorage.setItem("lastname", "Smith");

// Retrieve
document.getElementById("result").innerHTML = localStorage.getItem("lastname");
 

В локальном хранилище вы можете хранить до 5 МБ данных, поэтому вы можете использовать это, но проблема в том, что если вы хотите установить срок действия, вы не можете сделать это простым способом, вам нужно создать функции для этого. вот так

Ответ №3:

Максимальный размер файла cookie составляет 4k байт. Вы не можете хранить больше этого. Подробнее об ограничениях файлов cookie читайте здесь: http://browsercookielimits.iain.guru /

Если я запускаю тест в своем браузере Chrome, вот что он говорит:

 10:41:28.954: Guessing Max Cookie Count Per Domain: 180
10:41:28.954: Guessing Max Cookie Size Per Cookie: 4096 bytes
 

Ответ №4:

Используйте эту функцию :

 function setCookie(cname, cvalue, exdays) {
  var d = new Date();
  d.setTime(d.getTime()   (exdays*24*60*60*1000));
  var expires = "expires="  d.toUTCString();
  document.cookie = cname   "="   cvalue   ";"   expires   ";path=/";
}
 

Но существуют ограничения на размер файла cookie (4096 байт).

Но у вас может быть несколько файлов cookie, но и в этом тоже есть свои ограничения:

  • Chrome 9 разрешил 180 файлов cookie на домен
  • Firefox 3.6.3 разрешил 50 файлов cookie на домен
  • Internet Explorer 8 разрешил 50 файлов cookie на домен
  • Opera 10 и 9 разрешили 30 файлов cookie на домен