asmx WebMethod在asp.net上对POST请求进行缓存

时间:2009-08-05 20:46:26

标签: asp.net jquery web-services asmx

我正在使用jQuery从服务器获取一些JSON数据。我正在使用POST动词,但即使在设置了WebMethod CacheDuration属性之后,JSON也不会被缓存。

我用firebug检查了响应头,Cache-Control仍然设置为no-cache。 如何在客户端缓存这些请求,并避免每次都命中服务器。

更新

从scottGu读取此post后,我认为继续使用POST请求是安全的。他的帖子不适用于我试图做的那种操作吗? (从服务器获取数据而不进行修改)。事实上,在将动词更改为GET后,我甚至没有使用Web服务...

3 个答案:

答案 0 :(得分:3)

您应该使用get请求。 Post默认不缓存。您可以尝试通过使用.ajax()并将缓存设置为true并键入要发布来缓存帖子。我不能说这会像通常你不希望帖子缓存那样工作。我建议使用get。

E.g

$.ajax( { url: '/bla',
          type : 'post',
          data : dataObj,
          cache : true } );

答案 1 :(得分:1)

如果要使用缓存,请使用GET关键字。 SO上有一个类似的问题。

答案 2 :(得分:0)

我注意到ASP.NET缓存响应的方式存在差异,具体取决于缓存参数是查询字符串参数还是(在我的情况下使用ASP.NET MVC)路由参数。

我从来没有完全弄清楚条件是什么,但这可能对某人有所帮助。