有没有办法从静态方法访问缓存或会话?
Posted
技术标签:
【中文标题】有没有办法从静态方法访问缓存或会话?【英文标题】:Is there a way to access a cache or session from a static method? 【发布时间】:2010-09-27 23:21:07 【问题描述】:如何通过 jQuery ajax 调用访问缓存?
我正在使用 jquery 进行一些数据验证和快速数据访问。我有一个静态网络方法,jquery 通过 json 调用它来返回一个值。我不想每次都调用数据库,所以我想缓存我正在访问的数据,但我无法确定如何从 javascript 或静态方法中调用 asp.net 缓存。
我想将页面对象发送到静态方法,这将允许我访问 page.cache,但不知道如何。除此之外,也许是一种从 javascript 本身访问缓存的方法?
【问题讨论】:
【参考方案1】:System.Web.HttpContext.Current.Cache
缓存是按应用程序域共享的,而不是按页面共享的。页面只有一个convenience property of Page.Cache 来获取当前的缓存,这意味着你可以在页面中的方法中执行 Cache["key"]。
正如您所注意到的,如果您使用的是静态方法,那么您就没有 Page 实例,也没有 Page.Cache 属性。所以,你需要使用HttpContext.Cache。但是,等等 - 你也没有 HttpContext 实例!没关系,当前执行的实例存放在HttpContext.Current的静态属性中。
所以 - 回答您的问题 - 在静态方法中,使用 HttpContext.Current.Cache。顺便说一句,您还可以从那里访问 Request 和 Response 属性。
【讨论】:
你是我的救星!这正是我想知道的。我知道必须有一种方法可以到达缓存,但不知道如何。非常感谢!【参考方案2】:如果你真的想这样做,我认为调用 PageMethod 可能是你能做的最好的事情:
http://encosia.com/2008/05/29/using-jquery-to-directly-call-aspnet-ajax-page-methods/
【讨论】:
【参考方案3】:Javascript 是客户端,缓存在服务器端,所以你需要回调你的 asp.net 应用程序中的一个方法,它会返回缓存的内容。
ASP.NET Cache API 真的很不错,你可以使用 Cache["Key"] 来获取你喜欢的缓存内容。在这里阅读更多:http://msdn.microsoft.com/en-us/library/ms972379.aspx
【讨论】:
以上是关于有没有办法从静态方法访问缓存或会话?的主要内容,如果未能解决你的问题,请参考以下文章
thinkphp3.2中开启静态缓存后对404页面的处理方法