【问题标题】:Saving Values in Session or Cache - Difference? ASP.NET在会话或缓存中保存值 - 差异? ASP.NET
【发布时间】:2011-05-31 07:57:52
【问题描述】:

我想知道什么时候应该使用 Session,什么时候应该使用缓存。性能上有区别吗?他们中的一个能否更好地处理大量数据?缓存是否应该仅用于与应用程序关联的内容,而会话应仅用于与当前会话/用户关联的内容? 将我从数据库接收到的值保存在会话或缓存中是否更明智 - 假设我使缓存键唯一,是否有区别?例如。 Cache["MyKey"+UserId.ToString()].

此外,一般来说,使用会话/缓存是否比从数据库或 Web 服务中检索数据更明智,或者是否存在可以更快检索的数据限制?

【问题讨论】:

    标签: c# asp.net session caching


    【解决方案1】:

    会话和缓存的一些区别:

    • 会话针对每个用户,而缓存针对每个应用程序
    • 您可以将会话数据存储在进程外(SessionServer 或 SqlServer),例如使用网络农场时
    • 您放入会话中的内容会一直保留在那里,直到会话终止/放弃或超时
    • 使用缓存,您可以指定项目在一段时间后(绝对)或在一段时间未访问(滑动)后自动删除
    • 当数据库中的某些数据发生变化时,您还可以使用 SqlCacheDependencies 从缓存中删除项目
    • 如果可用内存不足,ASP.NET 运行时也会自动从缓存中删除项目

    性能方面:

    • 只要你使用 InProc 会话状态,我想会话和缓存之间不会有任何性能差异。
    • 一旦您使用外部会话状态,性能显然会低于 InProc 缓存,但我没有任何数字(取决于网络、SQL 服务器功率等)。
    • 顺便说一句:还有分布式缓存解决方案,允许使用外部共享缓存(类似于进程外会话状态)。

    【讨论】:

    • 是的,我已经看到了这个问题,不幸的是它并没有真正涉及到整个性能部分。你碰巧对此有任何意见吗?会话与缓存以及它们与 Db/Webservice 的对比?谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 2015-03-13
    • 2014-08-02
    • 1970-01-01
    • 1970-01-01
    • 2019-07-15
    相关资源
    最近更新 更多