Изучаем HTML 5-Б. Лоусон, Р. Шарп - 2011

Печать

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

Прежде, для того чтобы запомнить данные веб-приложения, разработчикам приходилось либо дробить их, сохраняя часть на сервере и создавая некое связующее звено между клиентом и сервером, либо использовать файлы cookie.

Файлы cookie — это кошмар и ужас. Нет, само слово переводится прекрасно, печенье любят все. И все же, оно должно быть на столе, а не в браузере. С файлами cookie связано множество проблем, превращающих работу с ними в сплошную головную боль. Приступая к новому проекту, в котором будут использоваться файлы cookie, первым делом я отправляюсь на поиски библиотеки JavaScript, предназначенной специально для таких приложений. Если мне не удается найти ее, то я обращаюсь за помощью к Google и копирую нужные фрагменты из кода, написанного Питером-Полом Кохом.

ПРИМЕЧАНИЕ

Код Питера-Пола Коха для приложений, использующих файлы cookie, можно загрузить с сайта http://www.quirksmode.org/js/ cookies.html.

Программная реализация файлов cookie чрезмерно усложнена. Только взгляните:создание файла cookie на JavaScript выглядит примерно так:

document.cookie = "foo=bar; path=/";

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

document.cookie = "foo=bar; path=/; expires=Tues, 13 Sept 2010 12:00:00";

Формат времени исключительно важен — вы уже поняли, что это еще один источник головной боли? А теперь покроем наши черствые печенюшки прокисшей глазурью:удалить файл cookie можно, только присвоив ему пустое значение:

document.cookie = ,rfoo=; path=/";