2013-08-01 2 views
4

Я понимаю, что состояние может храниться в файлах cookie и в кеше session[].Сохранение состояния по запросам от одного и того же пользователя

Какое из следующих может быть использовано для хранения запросов ACROSS штата от одного и того же пользователя? Выбрать все, что подходит.

  1. Печенье
  2. The session[] хэш переменных
  3. Instance, установленные с помощью метода контроллера
  4. переменные класса, установленные с помощью метода контроллера

Ответ на этот вопрос викторины был (1) и (2). Мой вопрос: почему нельзя (3) и/или (4) сохранять состояние по запросам от одного и того же пользователя?

ответ

6

(3) не может хранить состояние по запросам. Каждый раз, когда запрос входит в ваше приложение Rails, создается экземпляр вашего контроллера и на него вызывается соответствующий метод действий. После того как запрос будет обработан, экземпляр контроллера будет выброшен, а новый - для следующего запроса.

(4) может технически хранить состояние по запросам, но данные будут доступны для всех экземпляров вашего контроллера, независимо от того, какой пользователь делает запрос. Он также не может быть доступен из других контроллеров, теряется, если сервер перезагружается, и если сразу запускаются несколько экземпляров вашего приложения Rails (что довольно часто встречается в производственных сценариях), содержимое переменной класса не будет передаваться между ними.

Разработка того, почему такая штука плохая: https://stackoverflow.com/a/1029798/742690

Смежные вопросы