#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 на домен