これは、アプリケーションリクエストルーティングと特定のリクエストのディスクキャッシュを動的に無効にすることに関するものです(リクエストが認証されたユーザーからのものであり、認証されているかどうかはカスタムコードで決定できます)。
私のセットアップでは、ARRを実行しているサーバーがあり、別のサーバー上のASP.NETMVCサイトに要求をディスパッチします。サイトはフォーム認証(場合によってはHTTP基本認証)を使用するため、認証はARRではなくMVCサイトで行われます。基本的にユーザーがサイトを認証すると、フォーム認証Cookieが作成されます。
ARRで次のことを実行したいと思います。
このシナリオのキャッシュ構成ルールを設定するにはどうすればよいですか?私は複数の方法を試しました:
前もって感謝します!
IISフォーラム からこれをクロスポストしました。誰も返信しなかったからです。
これが私がそれを解決した方法です。
次の前提を念頭に置く必要があります。
大きなアイデアは、リクエストのURLを変更することです。つまり、ユーザーが認証されているかどうかに応じて、IIS URL Rewrite)で別の方法で書き換えます。認証されていないユーザーは、すべてのページに/ my-などが表示されます。 page?authenticated = falseおよび/ my-page?authenticated = trueで認証されたページ。ページは匿名ユーザーに対してのみキャッシュされるため、ARRは認証されたユーザーに一致するキャッシュエントリを見つけられません。したがって、3番目のポイントは解決されます。 URLに添付するクエリ文字列がHTML本文に表示される可能性があることの欠点は、IIS URLRewriteで削除する必要があることです。
現在のリクエストをキャッシュしないようにARRに指示するには、ARR_CACHE_CONTROL_OVERRIDEサーバー変数を「1、no-cache」に設定します(これは書き換えルールから実行できます)。
ユーザーがIIS URL Rewrite IRewriteProvider( tutorial を参照))から認証されているかどうかを検出できます。つまり、そのようなプロバイダーの出力を使用して、URLを別の方法で書き換えることができます。認証された匿名ユーザー向け。
それが誰かを助けることを願っています。
キャッシュ制御の構成はHTTP/1.1でのみ機能し、古いIEブラウザーのキャッシュを無効にするには、構成する必要があります
次の記事では、これについて詳しく説明しています。 ARRでキャッシュを無効にする