Убедите браузер кэшировать модель DOM, измененную с помощью JavaScript

У меня есть веб-приложение, на главной странице которого есть форма входа. Когда форма входа отправлена, за кулисами происходит некоторая jiggery-pokery JavaScript, и данные пользователя появляются - без загрузки страницы.

Проблема в том, что когда пользователь уходит со страницы, а затем использует кнопку «Назад» для перехода назад, страница находится в исходном состоянии без входа в систему. Могу ли я сделать так, чтобы браузер кешировал измененную модель DOM?


person nornagon    schedule 29.04.2011    source источник
comment
Связано: stackoverflow.com/questions/1195440/   -  person nornagon    schedule 17.07.2011


Ответы (2)


Вы можете попробовать использовать такой плагин: http://benalman.com/projects/jquery-bbq-plugin/

Вы должны создать ссылку #logged в своем URL-адресе, когда вы нажимаете на историю, вам просто нужно повторно запросить информацию о пользователе.

Надеюсь это поможет.

person alexl    schedule 29.04.2011

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

  1. Закрепи "джиггеры-покеры", чтобы не сломалось.

    • What I mean is: it's not REALLY logging the users in, it's just giving them the illusion of being logged in
    • Поэтому вам нужно изменить его так, чтобы он хранил некоторую информацию (возможно, в сеансе), подтверждающую, что они вошли в систему.
  2. После того, как jiggery-pokery будет исправлен, ваша страница может выполнить проверку этой части информации и представить DOM "вошедшего в систему".

    • If they're not logged in, it still uses the old JS method to show the original, log them in, and update the DOM (the first time).

Есть смысл?

Текущий поток:

  1. Посетить сайт

  2. JS логин

  3. Обновить DOM

Новый поток:

  1. Посетить сайт

  2. Проверить, авторизован ли

  3. Представьте соответствующий DOM

  4. JS Войти

  5. Backend хранит данные для входа

  6. JS обновляет DOM.

person rockerest    schedule 29.04.2011
comment
Браузер не запрашивает сервер при нажатии кнопки «Назад», поскольку страница кэшируется. Я пытаюсь избежать установки запрета на хранение в Cache-control. - person nornagon; 29.04.2011
comment
Что ж, решение этого состоит в том, чтобы Javascript проверял, вошел ли пользователь в систему до загрузки страницы, поэтому, если они есть, затем он представляет вошедшую в систему DOM. Это все еще не исправляет неработающую систему входа в систему: - / Создание иллюзии входа в систему, похоже, создаст гораздо больше головной боли в будущем. - person rockerest; 30.04.2011
comment
Это не иллюзия - я действительно установил cookie в их браузере. Я просто хочу, чтобы все было постепенно, вместо того, чтобы загружать страницы. - person nornagon; 02.05.2011