在会话或缓存中保存值 - 区别? ASP.NET
问题描述:
我想知道什么时候应该使用会话,什么时候应该使用缓存。性能有差异吗?他们中的一个能更好地处理大量数据吗?缓存是否仅用于与应用程序关联的内容,而Session只能用于与当前会话/用户关联的内容? 在会话或缓存中保存从数据库中收到的值是否更明智 - 假设我使缓存键唯一吗?是否存在差异?例如。 Cache["MyKey"+UserId.ToString()]
。在会话或缓存中保存值 - 区别? ASP.NET
另外,一般来说,使用会话/缓存比从数据库或Web服务检索数据要聪明得多,还是会有更快检索的数据限制?
答
会话和高速缓存之间的某些区别:
- 会话是每个用户而所述高速缓存是每个应用程序
- 可以存储会话数据外的过程(SessionServer或SqlServer的),例如当使用网络农场时
- 您放入会话的内容会一直保留,直到会话终止/放弃或超时
- 通过缓存,您可以指定在一段时间(绝对)或之后自动删除项目他们并没有在一段时间(滑动)
- 您还可以使用SqlCacheDependencies有从缓存中删除项目时,在数据库中的一些数据变化
- ASP.NET运行时也会自动从如果缓存中删除的项目访问可用内存变低
As对于性能:
- 只要您使用InProc会话状态,我猜会话和缓存之间不会有任何性能差异。
- 只要您使用外部会话状态,性能显然会比InProc缓存低,但我没有任何数字(取决于网络,SQL服务器功率等)。
- BTW:还有分布式缓存解决方案允许拥有外部共享缓存(类似于进程外会话状态)。
另请参阅此问题:http://stackoverflow.com/questions/428634/cache-vs-session – M4N 2011-05-31 08:06:22
是的,我已经看到了这个问题,不幸的是它并没有真正进入整个表演部分。你有没有对此有任何意见?会话Vs缓存和他们都与Db/Webservice?谢谢! – 2011-05-31 08:07:25