Почему Rails сохраняет сеанс, даже если не было никаких изменений? - PullRequest
0 голосов
/ 24 января 2011

Приложение My Rails (3) использует AJAX для загрузки нескольких портлетов на панель инструментов. Пользователь должен пройти проверку подлинности, чтобы иметь возможность просматривать панель инструментов. Таким образом, user_id, сохраненный в сеансе, важен. Я использую хранилище сеансов ActiveRecord по умолчанию.

После завершения GET '/ dashboard' несколько запросов XHR GET запускаются (и обрабатываются параллельно с балансировкой нагрузки). Эти запросы никоим образом не изменяют сеанс, они просто извлекают идентификатор пользователя из сеанса.

Тем не менее, это приводит к UPDATE 'sessions' ... where 'session.id' = ... для каждого запроса XHR. Вызывает блокировку строки в первом запросе XHR, поэтому следующие запросы XHR зависают до тех пор, пока не будет снята блокировка.

Есть ли какая-либо причина, по которой Rails должен снова сохранить сеанс в базе данных, даже если не было никаких изменений?

1 Ответ

0 голосов
/ 24 января 2011

Rails обновляет поле updated_at, чтобы вы могли видеть, когда сеанс последний раз использовался .

Например, вы можете выбросить сеансы, которые не использовались в течение некоторого времени.Выполнение запроса означает, что вы используете сеанс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...