K. *_*Bob 4 jquery outputcache asp.net-mvc-3
我有一个像这样的简单的MVC3控制器动作
[HttpGet]
[OutputCache(Duration = 1200,Location=System.Web.UI.OutputCacheLocation.Server)]
public string GetTheDate()
{
return DateTime.Now.ToString();
}
Run Code Online (Sandbox Code Playgroud)
我从这样的jQuery Ajax中调用它
jQuery.ajax({
type: "GET",
url: "http://localhost:60690/Public/GetTheDate",
cache: false,
success: function (data) {
//alert("success");
jQuery("#stats").append("<b>" + data + "</b>");
},
error: function (req, status, error) { alert("failure"); alert(error + " " + status + " " + req); }
});
Run Code Online (Sandbox Code Playgroud)
问题是日期始终是当前日期,而不是缓存的响应.我的理解是,这[OutputCache( Location=Server)]意味着服务器(MVC应用程序)缓存响应,当客户端请求数据时,拦截操作以便不打扰DateTime.Now但返回缓存的响应.
我是错误地理解它还是只是做错了什么?
更新:
3nigma的答案是对的.VaryByParams="none"诀窍但是.....从我的方法中很明显我没有任何参数,所以我为什么要说"无".事实证明,'Params'我认为所提到的文档是我方法中的params实际上不是我方法中的参数,它们是请求处理程序可以解释为params的任何东西.
在MS文档说
当此属性设置为多个参数时,输出缓存包含每个指定参数的请求文档的不同版本.可能的值包括"none","*"以及任何有效的查询字符串或POST参数名称.
请参阅粗体位(我的重点),这意味着虽然我不期望任何查询字符串参数,如果有任何get发送(就像jQuery.ajax通过附加到请求时缓存:false的方式GET /Public/GetTheDate?_=1324047171837),那么有一个参数,无论我是否预料到.
与cache: false,你明确告诉jquery不要缓存集 cache: true,
编辑
设置之VaryByParam="none"类的
[OutputCache(Duration=1200, VaryByParam="none",Location=System.Web.UI.OutputCacheLocation.Server)]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4314 次 |
| 最近记录: |