Web ファームのサーバー キャッシュをリモートでリセットする最善の方法は何ですか?

StackOverflow https://stackoverflow.com/questions/76855

  •  09-06-2019
  •  | 
  •  

質問

弊社の各運用 Web サーバーは、個別の Web サイト (ASP.NET Web アプリケーション) 用に独自のキャッシュを維持します。現在、キャッシュをクリアするには、サーバーにログインし、web.config ファイルに「タッチ」します。

誰かが安全/確実な方法の例を持っていますか? 遠隔的に 特定の Web アプリケーションのキャッシュをリセットしますか?理想的には、「すべてのサーバーで実行されているアプリ X のキャッシュをクリアする」だけでなく、「サーバー Y で実行されているアプリ X のキャッシュをクリアする」こともできるようになります。

編集/説明:

  • おそらく、アプリケーション自体を介してこれを行うことは実際には選択肢ではないことを明確にする必要があります(つまり、アプリケーションへの何らかのログイン、キャッシュをクリアする特定のページまたはハンドラーへのサーフィンなど)。このようなことを行うには、ログ記録と統計追跡コードを無効化/バイパスするか、統計情報を台無しにする必要があります。

  • はい、キャッシュは定期的に期限切れになります。ただし、私がやりたいのは、通常はデータベース内の何かを変更した後 (SQL 2000 を使用しています)、オンデマンドで特定のキャッシュを期限切れにできるように何かをセットアップすることです。これを行うには、サーバー自体にログインする必要があります。

役に立ちましたか?

解決 2

を見つけました DevX 便利そうなタッチユーティリティに関する記事。

これをデータベース内のテーブル (レコードを追加すると、touch ユーティリティがそれを見つけて適切な web.config ファイルを更新します) または Web サービス (呼び出しを行うと、touch ユーティリティが呼び出されて更新されます) と組み合わせてみます。適切な web.config ファイル)

他のヒント

アプリケーションごとに、キャッシュ/アプリケーション データを強制終了する小さなcache-dump.aspx スクリプトを作成できます。これをすべてのアプリケーションにコピーし、通話を管理するためのハブ スクリプトを作成します。

セキュリティのために、あらゆる種類の認証検索や IP チェックを追加できます。

実際にアプリをダンプする方法は次のとおりです。

Context.Application.Lock()
Context.Session.Abandon()
Context.Application.RemoveAll()
Context.Application.UnLock()

これは「エレガント」ではないかもしれませんが、バッチ スクリプトを実行するスケジュールされたタスクをセットアップできます。スクリプトは基本的に、web.config (または再コンパイルを引き起こすその他のファイル) に「タッチ」します。

それ以外の場合、アプリケーション キャッシュは N 分後に期限切れになるように設定されていませんか?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top