需要问你一些帮助。
我在Net 2.0中运行了web应用程序
我想问一下我应该为我的对象使用什么存储(缓存,会话,文件),因为它们具有不同的使用范围。可分为几组:
1)与访问者直接相关的对象(例如,在认证后收到的访问者的详细信息)
2)用于每个访问者的对象,因此其应用范围(一些初始数据,公共数据)
这些对象中的大多数都从Web服务获取数据,这很昂贵。
那么考虑速度,记忆力,可访问性以及我应该注意的其他内容,我最好的选择是什么。
欢迎任何帮助。谢谢,X。
答案 0 :(得分:2)
直接与访问者相关的对象应存储在Session
中,但过度使用Session
和许多用户可能会导致可伸缩性问题。
每个访问共享的对象应该存储在Cache
中,因此如果不经常访问它们,它们将超出范围,以便可以回收内存(更不用说增加的激励了)依赖)。在您知道对象必须可以立即访问的情况下,无论在上次访问它之间经过了多长时间,您应该将该对象存储在Application
中。
答案 1 :(得分:1)
第1项 - 会话很可能是最好的,因为它是每个用户,但是,请务必限制那里的项目数量,因为存在扩展问题,以及在Web场中的注意事项。
第2项 - 根据您的需要,这将是您要添加的缓存或应用程序级别项目,具体取决于到期时间等。关键区别在于缓存已过期以及可以删除它的使用项目,应用程序适用于始终存在的事物。
总的来说,在Web应用程序中,我强烈推荐AGAINST文件,因为你必须担心线程安全。
答案 2 :(得分:0)
每个访问者的相对对象应存储在Session中。这对于每个访问者来说都是唯一的,但往往会被刷新,当您迁移到多服务器环境时,这也会很难扩展。
与整个应用程序相关的对象应存储在ASP.NET缓存中。