2

asp.net MVC ページのドロップダウンが、json データの AJAX GET 要求によって取り込まれている状況があります。最初のリクエストは、200 OK レスポンスでデータを返します。後続の呼び出しでは 304 Not Modified 要求が返されますが、ドロップダウンにはまだ正しく入力されています。これはすべて順調です。

ただし、私のアプリケーションの別の部分では、別のユーザーが、ドロップダウンのデータが返されるリポジトリのコンテンツを変更する可能性があります。私が望むのは、そのような変更の後、ドロップダウンのデータに対する他のユーザーによる後続の要求は、304 Not Modified の結果を返すのではなく、データの再取得を行うことです。

どうすればこれを達成できますか?

4

1 に答える 1

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-WithAJAX リクエストを示します。選択した JS フレームワークは、通常、それをサポートする必要があります。

于 2013-11-26T16:17:20.373 に答える