2015-01-21 48 views
0

我使用這個MVCDonutCaching Nuget package,因爲在tutorial他們說這是可能的兒童行動。MVCDonutCaching - 如何刪除兒童動作緩存MVC甜甜圈緩存

This question對我不起作用,或者我沒有正確理解它。

如果有人知道如何刪除具有標準OutputCache屬性的子緩存,那麼也可以!

我已經搜索了這個,但我找不到它。在這裏看到一個例子:HomeController的(主頁)的

Index操作:

[AllowAnonymous] 
public ActionResult Index() 
{ 
    return View(); 
} 

ChildAction的NewsController的:HomeController的的

[AllowAnonymous] 
[ChildActionOnly] 
[DonutOutputCache(Duration = 600, Location = OutputCacheLocation.Server)] 
public PartialViewResult LastArticles(int numberOfArticles) 
{ 
    return PartialView("_LastArticles", db.NewsArticles 
    .Include(i => i.Tags) 
    .Include(i => i.SeoTags) 
    .Where(n => n.Status == PublishStatus.Published) 
    .OrderByDescending(n => n.PublishDate) 
    .Take(numberOfArticles) 
    .ToList()); 
} 

索引視圖:

@{ Html.RenderAction("LastArticles", "News", new { numberOfArticles = 2 }); } 

清除緩存我有一個Admin ar在我的應用程序中,通過一個控制器和一個動作來更新子動作存儲的數據。所以當新聞文章更新時。應該在主頁上刷新緩存。

在這一行動,我有以下代碼:

var cacheManager = new OutputCacheManager(); 
cacheManager.RemoveItem("News", "LastArticles", new { area = "", numberOfArticles = 2 }); 
cacheManager.RemoveItem("News", "LastArticles", new { area = "" }); 

我試過多個版本,但沒有運氣。有誰能夠幫助我?

+0

感謝Marino:解決方法是使用'cacheManager.RemoveItem(「News」,「LastArticles」,new {numberOfArticles = 2});' – 2015-01-21 12:55:56

回答

1

我相信你不應該明確定義(空)區域。雖然該區域是路由的重要組成部分,但MVCDonutCaching在定義內部密鑰方面做了一些奇怪的事情。也許MVCDonutCache有關於區域的錯誤。

+1

您的權利!解決方案是刪除空白區域。奇怪的是,如果您使用標準的'OutputCache',則必須使用空白區域。看起來像Nuget包中的一個錯誤。 – 2015-01-21 12:54:05