Есть ли способ очистить ключ кэша сеанса для всех пользователей? - PullRequest
7 голосов
/ 02 февраля 2012

Есть ли способ очистить ключ кэша сеанса для всех пользователей?

Например, я сохраняю выбранный пользователем элемент магазина под следующим ключом сеанса "currentItem".В области управления веб-сайтом я решаю удалить этот конкретный элемент магазина.Теперь я хочу аннулировать все записи кэша «currentItem» во всех сеансах.

Есть ли способ сделать это?

Я понимаю, что приведенный мной пример немного надуман, нополучает точку зрения.Я подозреваю, что одним из решений было бы использование обычного API Cache для хранения всех текущих элементов пользователей.Таким образом, я могу сделать их недействительными, когда потребуется.

спасибо

Ответы [ 2 ]

3 голосов
/ 02 февраля 2012

Вы не можете получить все текущие сеансы от всех пользователей
(Честно говоря, вы можете , но я не рекомендую это, и все же вы можете читать только InProc sessions таким образом).

Таким образом, единственное, что вы можете сделать, это что-то вроде этого:

  • Хранить в Session только ID корзины пользователя
  • Добавить товар сID в кэш
  • Затем добавив элемент в Cache, установите зависимость для элемента
  • Затем просто создайте событие, чтобы изменить целые корзины в Cache.
  • Также вам следует подумать о воссоздании предметов, если по каким-либо причинам опустошается Cache - для этого события вы должны предоставить обратный вызов *1028*.
0 голосов
/ 02 февраля 2012

Вы можете переместить корзину в базу данных. Если у вас нет очень быстрого процесса покупки или крайне избыточной среды, Session или Cache, вероятно, не будут достаточно долговечными. Поскольку они не сохраняются, у вас также не будет прямого метода для анализа решений о покупке, истощении и т. Д.

В зависимости от того, как часто меняется ваш инвентарь, вам может понадобиться только подтвердить, что товар в корзине доступен при оформлении заказа. Как пользователь, мне было бы очень странно видеть, что товар просто «волшебным образом» исчез из моей корзины или что цена изменилась. На мой взгляд, было бы лучше явно это назвать.

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

Если вам необходимо использовать решение на основе сеанса или кэша, то предлагаемое решение @ VMAtm является допустимым вариантом.

...