2

あるasp.net Webアプリケーションの出力キャッシュを別のasp.net Webアプリケーション内からクリアすることは可能ですか?

理由は...次のような構造のWebアプリケーションがいくつかあります...

/area1/ と /area2/ のページはキャッシュされ、/intranet/cms/ を通じて管理されます。/intranet/cms/ を使用してページを編集するときに、適切な /area#/ アプリケーションでキャッシュから消去したいと考えています。

HttpContext.Cache に格納されている GUID を検索する VaryByCustom を使用してみましたが、Web アプリケーションごとにキャッシュされているようで、機能しません。

単一のサーバー上の Web アプリケーション間でデータを渡す方法があれば、+ VaryByCustom を使用できるため、問題は解決します。

ありがとう!

-マイク・トーマス

4

2 に答える 2

3

過去にこれを行った方法/areaXは、フラッシュ、リロードなどを行う「隠し」ページを (各サイトに) 持つことです。ページは、何かを行う前に共有シークレット クエリ パラメータを検証します (DoS 攻撃を回避するため)。 )。有効な場合、操作が完了すると、ページは「OK」メッセージを出力します。シークレットが無効な場合、404 エラーが生成されます。

アイテムごとまたはグループごとにフラッシュを行う場合は、そのアイテム/グループを識別する 2 番目のパラメーターを追加します。

また、この方法はサーバー テクノロジに依存せず、必要に応じて他の管理ツールによってトリガーできます。

于 2009-09-15T04:54:05.320 に答える
2

私が知っている方法の 1 つは、共有リソース (通常はファイル) を依存関係として使用することです。ファイルが変更されると、キャッシュはクリアされます。これにはHttpResponse.AddFileDependencyを使用できると思います。

ただし、このような場合は通常、memcachedなどのプロセス外キャッシュを使用することをお勧めします。私は自分でテストしていませんが、このリンクは、memcached を OutputCache で使用する方法を扱っています。

于 2009-09-15T04:37:22.297 に答える