Различное поведение браузера между localStorage / sessionStorage и cookie - PullRequest
1 голос
/ 13 декабря 2010

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

Например:

  • В Firefox 3.6 sessionStorage не используется совместно для вкладок в рамках одного сеанса браузера.
  • localStorage никогда не может быть установлен как истекающий, в то время как sessionStorage никогда не может сохраняться.

  • Если сайт использует файлы cookie для сеанса, они распределяются между вкладками.

  • Если срок действия файла cookie истекает, срок его действия истекает после определенной даты.

Имеет смысл, что это не «как для подобных», однако это означает, что нам может потребоваться смешивать и подбирать наши решения для хранения данных в зависимости от потребности. Ваши мысли и мнения о преимуществах / ловушках любого из них будут оценены.

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

Для этого мы создали класс, который устанавливает, получает, удаляет и очищает методы, которые хранят переменные приложения в строке JSON (это позволяет нам группировать значения в иерархии). Для браузеров, в которых нет парсера JSON, мы используем плагин Crockfords JSON .

Во время выполнения класс хранения работает, если браузер пользователя поддерживает хранение в браузере, в противном случае вместо него задаются функции записи в файлы cookie. Из-за уже выделенных несоответствий (плюс другие, о которых я не знаю), это прогрессивное улучшение типа «нравится как» на самом деле ложно.

Редактировать: Еще одна проблема браузера: если IE 8 работает в стандартном режиме IE 7, он поддерживает localStorage и sessionStorage, тогда как автономный IE 7 не (!).

...