【发布时间】:2011-02-15 06:59:08
【问题描述】:
根据标题。我希望能够将一些数据保存在缓存对象中,但该对象必须可供所有用户/会话使用并且可以过期。
在 asp.net 网络应用程序中实现这一目标的最佳方法是什么?
【问题讨论】:
根据标题。我希望能够将一些数据保存在缓存对象中,但该对象必须可供所有用户/会话使用并且可以过期。
在 asp.net 网络应用程序中实现这一目标的最佳方法是什么?
【问题讨论】:
HttpContext.Current 适用于所有页面,但不一定适用于所有线程。如果您尝试在后台线程、ThreadPool 委托、异步调用(使用 ASP.NET Async 页面)等中使用它,您最终会得到NullReferenceException。
如果您需要从库类(即不知道当前请求的类)访问缓存,则应改用HttpRuntime.Cache。这更可靠,因为它不依赖于HttpContext。
【讨论】:
HttpContext.Current.Cache 无论如何都只是指向与HttpRuntime.Cache 相同的缓存,但前者引入了一个中间依赖关系,它有可能在以后破坏某些东西。在 SO 上搜索“HttpContext NullReferenceException”,你就会明白我的意思了......
HttpContext.Current.Cache 将会出现,但只有在您无法访问上下文成员时才应使用 Current。
也回答你的第二个问题,是的,Cache 对象是应用程序的全局对象。
这是一个很好的缓存介绍...
How to cache in ASP.NET by using Visual C# .NET
还有……
Caching with ASP.NET 。不要跳过第 2 部分,“数据缓存”
【讨论】: