首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ASP.Net中的数据缓存与会话对象

ASP.Net中的数据缓存与会话对象
EN

Stack Overflow用户
提问于 2009-01-29 15:26:05
回答 5查看 18K关注 0票数 11

站点的动态业务对象应该存储在用户会话中,还是应该使用ASP.Net缓存(订单、配置文件信息等对象)?

我曾经使用过使用会话来存储业务对象的站点,但我使用的是wondering...What。缓存有什么优点或缺点?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-01-29 15:33:31

如果对象可以在用户会话之间共享,则使用缓存。如果对象对于每个会话都是唯一的--可能是因为它们由权限控制--则将其存储在会话中。进程中的会话本身存储在缓存中,因此决定因素实际上应该是数据的范围。

票数 24
EN

Stack Overflow用户

发布于 2009-01-29 15:37:23

缓存就是--缓存。您永远不能依赖那里的条目,因此在这方面不能做任何假设:准备直接转到DB (或其他任何地方)来重新获取数据。

另一方面,会话更适合于存储对象,尽管就我个人而言,我尽量避免使用会话存储而倾向于使用DB。我通常通过将存储抽象为不透明的ISessionStoreService接口来做到这一点:

代码语言:javascript
复制
interface ISessionStore
{
    T GetEntry<T>(string key);
    void SaveEntry<T>(string key, T entry);
}

然后是“依赖注入”适当的实现,不管是InmemorySessionStore、DbSessionStore还是其他什么。

票数 7
EN

Stack Overflow用户

发布于 2009-01-29 15:33:58

ASP.NET系统缓存对于应用程序是全局的,而会话对于当前用户是唯一的。如果您选择使用全局缓存来存储对象,则需要创建一个对象标识策略,以便根据每个用户获得正确的对象。

如果您希望提高性能,最好用分布式内存缓存替换ASP.NET会话状态,比如微软的velocity。微软已经发布了关于如何将会话使用替换为目标Velocity的文章。您还可以以相关方式使用Memcache或其他类似产品。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/492043

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档