2

我有一种情况,我的 asp.net MVC 页面上的下拉列表正在由对 json 数据的 AJAX GET 请求填充。第一个请求返回带有 200 OK 响应的数据。后续调用返回 304 Not Modified 请求,并且下拉列表仍然正确填充。这一切都很好。

但是,在我的应用程序的另一部分中,另一个用户可能会修改从中返回下拉数据的存储库的内容。我想要的是,在这样的修改之后,其他用户对下拉列表数据的任何后续请求都不应返回 304 Not Modified 结果,而是重新获取数据。

我如何实现这一目标?

4

1 回答 1

1

我总是完全禁用 AJAX 缓存。尤其是 Internet Explorer 可以在 AJAX 上进行主动缓存。

您可以进行智能缓存并检查数据是否已被修改,但这并非易事(至少我认为是这样,我从未尝试过)。

全球.asax.cs

protected void Application_BeginRequest()
{
    this.DisableAJAXCaching();
}

扩展.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 框架通常应该支持它。

于 2013-11-26T16:17:20.373 回答