/ / OutputCache MVC 3アプリケーションでアクションを介してキャッシュをフラッシュする - asp.net-mvc、asp.net-mvc-3、c#-4.0、action、outputcache

OutputCache MVC 3アプリケーションのアクションを介してキャッシュをフラッシュする - asp.net-mvc、asp.net-mvc-3、c#-4.0、action、outputcache

私たちが構築しているMVCアプリケーションからの多くのアクションでは、次のようにOutputCacheを使います。

[OutputCache(Duration = 3600, VaryByCustom = "language")]
public ActionResult SomeAction()
{
//Action..
}

それで、これらのキャッシュをすべて手動でフラッシュできるようなアクションが欲しいのです。

  public ActionResult RefrescarCache()
{
var keys = HttpContext.Cache.Cast<DictionaryEntry>().ToList();

keys.ForEach(k => HttpContext.Cache.Remove(k.Key.ToString()));
ViewBag.operationResult= "The cache was flushed succesfully!";

return View();
}

それはうまくいかないようです。私はあなたが持っているどんな考えや助言も非難するつもりです!

回答:

回答№1は1

あなたはここで見なければなりません: http://msdn.microsoft.com/en-us/library/system.web.httpresponse.removeoutputcacheitem.aspx


回答№2については2

私たちは同じ問題を抱えていました。

HttpResponse.RemoveOutputCacheItem(url)

Giedriusのようにすでに述べた。


回答№3の場合は0

誰もがすべてのURLをクリアする方法を求めているので...

私は2つの方法を考えることができます:

1 - 痛みを伴うが簡単、きれいになるように仮想パスの配列を維持する。

foreach(string path in myArray){HttpResponse.RemoveOutputCacheItem(path); }

2-反射を使用してすべてを取得します。次に例を示します。 OutputCacheエントリをリストします。

ASP.NETはページをキャッシュするのではなく、IIS(7+)のカーネルキャッシュであるため、これは難しいと思います。