しばやん雑記

Azure とメイドさんが大好きなフリーランスのプログラマーのブログ

OutputCache のキャッシュを削除する

データベースに更新があった場合には、やっぱりキャッシュを削除して即時反映できるようにしたいですよね。

普通なら SqlDependency を設定してあげればいいんでしょうけど、SQL Server の変更通知って正直設定よくわかってないですし、レンタルサーバで使えるか不安です。

とりあえず、キャッシュを手動削除して対策したいと思ったので調べてみると、HttpResponse.RemoveOutputCacheItem を使うらしいです。早速、適当にサンプルコードを書いて確認したところ、MVC でも正常に動作してくれました。

// 引数にはキャッシュを削除したい仮想パスを指定
HttpResponse.RemoveOutputCacheItem("/Home/About");

これだけでキャッシュを削除できます。ちなみに HomeController#Index のキャッシュを削除したい時には、仮想パスに "/" を指定しないと消えません。ルーティングの結果と同じと考えれば良さそうです。