Is there a way to clear a session cache key for all users?
Is there a way to clear a session cache key for all users?
For example, I am storing the users currently selected shop item under the following session key "currentItem". In the management area of the website, I decide to delete that particular shop item. I now want to invalidate all the "currentItem" cache entries across all sessions.
Is there a way to do this?
I realise the example I have given is a little contrived, but it gets the point across. I suspect one solution would be to use the normal Cache api to store all of the users current items. That way I could invalidate them when required.
thanks
You can't get all the current Sessions from all users
(Frankly speaking, you can, but I don't recommend this, and still you can read only InProc sessions
this way).
So the only thing you can do is something like this:
Session
only ID
of the user cart ID
to the Cache Cache
, set the dependency to the Item Cache
. Cache
is being emptied - you should provide the CacheItemRemovedCallback
callback for this event. You could move the shopping cart to the database. Unless you have a very rapid buying process, or an extremely redundant environment, Session or Cache will probably not be durable enough. Since they are not persisted, you also won't have a direct method to analyze buying decisions, attrition, etc.
Depending on how often your inventory changes, you might only need to validate that a cart item is available at checkout. As a user, it would be very confusing to me to see that an item had just "magically" disappeared from my cart or that the price had changed. It would be better to explicitly call this out, in my opinion.
Again, a database would be a superior solution as you could track the state of the item at the time it was added to the cart against the current definition of the product.
If you must use a Session or Cache-based solution, then @VMAtm's proposed solution is a valid option.
链接地址: http://www.djcxy.com/p/10388.html上一篇: 固定CSS列之间的差距
下一篇: 有没有办法清除所有用户的会话缓存键?