【问题标题】:ASP.NET Session Cache - Individual item expiryASP.NET 会话缓存 - 单个项目到期
【发布时间】:2012-02-23 14:42:13
【问题描述】:

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

使用Cache.Add(),您可以设置绝对到期和滑动到期。为什么你不能用Session 做到这一点?

【问题讨论】:

  • 很抱歉给出这么简洁的答案,但这是因为Session不是缓存。
  • 好的,但是假设我想以每个用户为基础存储一些东西,但要过期。这不是一个完全有效的场景吗?实现这一目标的最佳方法是什么?

标签: asp.net session caching


【解决方案1】:

会话没有缓存。 Session 是一种克服 Web 通信是无状态的事实的方法。每个会话都设置了一个“桶”,因此您可以绑定到会话。当用户的会话超时(通常是在他的最后一个页面点击后 20 分钟)时,它会超时。

如果您需要使某些内容过期,即使是每个用户,您也需要使用缓存而不是会话。您可以使用自动魔术糖并因用户而异。或者,您可以在其中一个 .NET 缓存对象之上构建您自己的自定义抽象(我使用 MemoryCache 进行本地缓存)。虽然我不会很快说“使用自定义代码”,但如果网站的用户数量在增长,缓存会带来好处,因为有一天您可以切换到分布式缓存,例如 AppFabric 缓存、nCache(非常适合网络)或 memcached .

【讨论】:

    猜你喜欢
    • 2015-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-06
    • 2013-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多