ASP.NET Session Cache - 单个项目过期

3

为什么在向Session对象添加项时不能设置单独的过期时间?

使用Cache.Add()可以设置绝对过期和滑动过期。为什么在Session中不能这样做呢?


抱歉回答得这么简短,但这是因为Session并不是一个缓存。 - moribvndvs
可能是 https://dev59.com/HnRC5IYBdhLWcg3wCMrX 的重复问题。 - moribvndvs
好的,但是假设我想要按用户存储某些内容,并设置过期时间,这不是一个完全有效的场景吗?那么最好的实现方式是什么? - Brett Postin
1个回答

5

Session 不是缓存。Session 是解决Web通信无状态的一种方式。每个会话都设置一个“桶”,可以将其与会话关联起来。当用户的会话超时时(通常是在最后一页访问后20分钟),它将超时。

如果您需要使某些内容过期,即使是每个用户,也需要使用缓存而不是 Session。您可以使用自动变量并按用户进行变化。或者您可以构建自己的自定义抽象层,基于 .NET 缓存对象之一(我使用 MemoryCache 进行本地缓存)。尽管我不赞成说“使用自定义代码”,但如果站点的用户增加,缓存有好处,因为您可以将其转换为分布式缓存,例如 AppFabric 缓存、nCache(非常适用于Web)或 memcached。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接