2013-04-24 105 views
0

我緩存用的東西:果園編程方式清除緩存

var htmlHEAD = _cacheManager.Get(THE_CACHE_KEY, ctx => 
     { 
      ctx.Monitor(_clock.When(TimeSpan.FromMinutes(60))); 

      return getTenantSpecificHeadHTMLFromDB() 
     }); 

不過,我希望能夠打一個網址和清除高速緩存,如果以往任何時候都需要一個快速的變化。

例如。這是在AdminController中。

public ActionResult purgeCache() { 
    _cacheMangager.PurgeCache(THE_CACHE_KEY); //this doesn't exist :(

    return Content("OK"); 
} 

我該怎麼做?

回答

2

不要只監控一個基於時間的到期,也監控一個叫信號(注ISignalsctx.Monitor(_signals.When("SomeUniqueKeyForYourExpirationSignal"));),然後觸發信號時要清除高速緩存條目:_signals.Trigger("SomeUniqueKeyForYourExpirationSignal");

+0

有趣,但隨後止跌」我失去了基於時間的到期時間?理想情況下,我希望兩者都在設定的時間後自動失效,並且可以手動清除。 – Alistair 2013-04-24 06:50:40

+3

沒有。如果您設置了2個信號進行監視,則只要其中任何一個被觸發,緩存就會被清除。請記住,高速緩存條目不會在現場清除 - 當您下次嘗試訪問它時(例如,將再次調用lambda'ctx => ...'來刷新條目),它將被刷新。 – 2013-04-24 09:38:58

+0

美麗的作品。非常感謝! – Alistair 2013-04-25 23:59:16