Webアプリケーション全体でASP.NET OutputCacheをクリアする
-
07-07-2019 - |
質問
あるasp.net Webアプリケーションの出力キャッシュを別のasp.net Webアプリケーション内からクリアすることは可能ですか?
理由:...いくつかのwepアプリケーションが次のように構成されています...
/ area1 /および/ area2 /のページはキャッシュされ、/ intranet / cms /を介して管理されます。 / intranet / cms /を使用してページを編集するとき、適切な/ area#/アプリケーションのキャッシュからページをクリアします。
すでにHttpContext.Cacheに保存されているGUIDを検索するVaryByCustomを使用しようとしましたが、Webアプリケーションごとにキャッシュされているようで、動作しません。
単一のサーバー上のWebアプリケーション間でデータを渡す方法があれば、それを使用してVaryByCustomを使用できるため、問題を解決できます。
ありがとう!
-マイクトーマス
解決
過去にこれを行った方法は、「非表示」を使用することです。フラッシュ、リロードなどを行うページ(各 / areaX
サイト内)。ページは、(DoS攻撃を回避するために)何かを行う前に共有秘密クエリパラメータを検証します。有効な場合、ページは「OK」を出力します。操作が完了するとメッセージが表示されます。シークレットが無効な場合、404エラーを生成します。
フラッシュをアイテムごとまたはグループごとに行う場合は、そのアイテム/グループを識別する2番目のパラメーターを追加します。
この方法もサーバーテクノロジーに依存せず、必要に応じて他の管理ツールによってトリガーできます。
他のヒント
これを行う方法の1つは、共有リソースを依存関係、通常はファイルとして使用することです。ファイルが変更されると、キャッシュはクリアされます。 HttpResponse.AddFileDependency を使用できると思いますこれのために。
ただし、これらのケースでは、通常 memcached などのアウトプロセスキャッシュを使用する方が適切です。 a>。私自身はテストしていませんが、このリンク OutputCacheでmemcachedを使用する方法。