为什么在向Session对象添加项时不能设置单独的过期时间?
使用Cache.Add()
可以设置绝对过期和滑动过期。为什么在Session
中不能这样做呢?
为什么在向Session对象添加项时不能设置单独的过期时间?
使用Cache.Add()
可以设置绝对过期和滑动过期。为什么在Session
中不能这样做呢?
Session 不是缓存。Session 是解决Web通信无状态的一种方式。每个会话都设置一个“桶”,可以将其与会话关联起来。当用户的会话超时时(通常是在最后一页访问后20分钟),它将超时。
如果您需要使某些内容过期,即使是每个用户,也需要使用缓存而不是 Session。您可以使用自动变量并按用户进行变化。或者您可以构建自己的自定义抽象层,基于 .NET 缓存对象之一(我使用 MemoryCache 进行本地缓存)。尽管我不赞成说“使用自定义代码”,但如果站点的用户增加,缓存有好处,因为您可以将其转换为分布式缓存,例如 AppFabric 缓存、nCache(非常适用于Web)或 memcached。