有没有办法从静态方法访问缓存或会话?

时间:2008-12-22 01:41:38

标签: c# asp.net jquery ajax dynamic

如何从jQuery ajax调用访问缓存?

我正在使用jquery进行一些数据验证和快速数据访问。我有一个静态Web方法,jquery通过json调用它来返回一个值。我不想每次都调用数据库所以我想缓存我正在打的数据,但我无法确定如何从javascript或静态方法中调用asp.net缓存。

我想将页面对象发送到静态方法,这将允许我访问page.cache,但不知道如何。除此之外,也许是一种从javascript本身访问缓存的方法吗?

3 个答案:

答案 0 :(得分:34)

System.Web.HttpContext.Current.Cache

每个应用域共享缓存 - 而不是每页。 Page只有一个convenience property of Page.Cache来获取当前的Cache,这意味着你可以从页面中的方法中执行Cache [“key”]。

正如您所注意到的,如果您使用的是静态方法 - 那么您没有Page实例,并且您没有Page.Cache属性。因此,您需要使用HttpContext.Cache。但是,等等 - 你也没有HttpContext实例!没关系,当前正在执行的实例存储在HttpContext.Current的静态属性中。

所以 - 回答你的问题 - 在静态方法中,使用HttpContext.Current.Cache。顺便说一句,您还可以从那里访问RequestResponse属性。

答案 1 :(得分:1)

如果你真的想这样做,我认为调用PageMethod可能是你真正做的最好的:

http://encosia.com/2008/05/29/using-jquery-to-directly-call-aspnet-ajax-page-methods/

答案 2 :(得分:0)

Javascript是客户端,Cache位于服务器端,因此您需要对asp.net应用程序中的方法进行回调,该方法返回缓存的内容。

ASP.NET Cache API非常好,您可以使用Cache [“Key”]来获取您喜欢的缓存内容。在此处阅读更多内容:http://msdn.microsoft.com/en-us/library/ms972379.aspx