我有一种情况,我的asp.net MVC页面的下拉列表正在由json数据的AJAX GET请求填充。第一个请求以200 OK响应返回数据。后续调用将返回304 Not Modified请求,并且仍会正确填充下拉列表。这一切都很好。
但是,在我的应用程序的另一部分中,另一个用户可能会修改存储库的内容,从中返回下拉列表的数据。我想要的是,经过这样的修改后,其他用户对下拉列表数据的任何后续请求都不应该返回304 Not Modified结果,而是重新获取数据。
我如何实现这一目标?
答案 0 :(得分:1)
我总是完全禁用AJAX缓存。特别是Internet Explorer可以在AJAX上进行激进的缓存。
您可以进行智能缓存并检查数据是否已被修改,但这不是一件容易的事(至少我是这么认为的,我从未尝试过)。
<强>的Global.asax.cs 强>
protected void Application_BeginRequest()
{
this.DisableAJAXCaching();
}
<强> Extensions.cs 强>
public static void DisableAJAXCaching(this HttpApplication application)
{
/*
* "CACHE ALL THE AJAX REQUESTS"
* - Internet Explorer
*/
if (application.Request.Headers["X-Requested-With"] != null)
{
application.Response.AppendHeader("Expires", "0");
}
}
X-Requested-With
表示AJAX请求。您选择的JS框架通常应该支持它。