В чем разница между saveUninitialized и resave?

Промежуточное программное обеспечение сеанса для Express предоставляет несколько настраиваемых параметров.

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

saveUninitialized: 'Принудительно сохраняет "неинициализированный" сеанс в хранилище. Сеанс не инициализируется, если он новый, но не изменен ».

Похоже, что оба варианта предназначены для сохранения неизмененных сеансов. В чем разница?


person Cannoliopsida    schedule 13.07.2015    source источник
comment
Возможный дубликат при использовании saveUnitialized и повторном сохранении в экспресс-сеансе   -  person Sunil Garg    schedule 05.12.2017


Ответы (2)


Я подумал, что начну с базового ответа, до сих пор моего понимания, и улучшу его вместе. Важный вопрос слишком долго был «мертвым».

Из this, насколько я понимаю, разница заключается в следующем:

(Немодифицированное состояние отличается от неинициализированного состояния)

повторно сохранить: для любого сделанного запроса

  • Ничего в сеансе менять не нужно (нет входа в систему и т. Д.).
  • Требуется смена сеанса (авторизован)

«Принудительно сохраняет сеанс, даже если он не был изменен»

saveUninitialized: касается состояния сеанса, если он все еще находится в неинициализированном состоянии.

  • Только не изменено, ничего в сеансе не нужно менять (нет входа в систему и т. Д.).

"Принудительно сохраняет" неинициализированный "сеанс в хранилище. Сеанс не инициализирован, если он новый, но не изменен".

person cfl    schedule 18.04.2016

По сути, сеанс сохраняется в магазине только при его изменении; если вы добавляете, удаляете или редактируете файл cookie сеанса (например: req.session.test = 'some value'). Если вы хотите, чтобы все сеансы сохранялись в магазине, даже если в них нет никаких изменений, используйте saveUninitialized: true.

Теперь повторное сохранение также происходит только при изменении переменных сеанса / файлов cookie. Если вы хотите сэкономить, всегда используйте resave: true

person sreesreenu    schedule 11.01.2017
comment
Что делать, если значение saveUninitialized равно True, но сеанс вообще не изменяется. Я знаю, что он сохранит сеанс в базе данных, но будет ли сохранен файл cookie сеанса? - person Neel Patel; 18.02.2021