我需要一個菜單結構根據用戶當前正在查看的頁面而改變。因此,我需要禁用某些節點的緩存,因爲這些緩存可能會針對每個請求進行更改。我該怎麼做呢?如何在MVCSiteMapProvider的某些節點上禁用緩存?
我曾嘗試通過以下方式設立DynamicNode
:
var dynamicNode = new DynamicNode()
{
Title = title,
Action = actionName,
Controller = controllerName,
RouteValues = routeValues,
Attributes = attributes,
ChangeFrequency = ChangeFrequency.Always,
LastModifiedDate = DateTime.Now,
UpdatePriority = UpdatePriority.Automatic,
};
但似乎有機會上沒有影響。
我也在的Web.config文件中設置了cacheDuration="0"
,沒有任何效果。
我也設置在GetCacheDesctription以下的DynamicNodeProvider
return new CacheDescription("GuideDynamicNodeProvider")
{
AbsoluteExpiration = DateTime.Now,
};
沒有效果
同樣的。
我是否錯誤地使用這些設置?這方面的文件相當缺乏。
我遇到類似的問題。我明確地調用'ReleaseSiteMap',但是當我從遠程計算機訪問時,它看起來像緩存仍然存在。我還能檢查什麼? – Shimmy 2015-07-21 16:22:23
如果您在更新數據的每個(POST)操作方法上調用SiteMapCacheReleaseAttribute,則會更好。這可確保通話在適當的時間進行。請記住,更新數據的同一篇文章通常也會重新載入緩存,因此在撥打電話之前必須先更新數據。 – NightOwl888 2015-07-21 17:08:16
我將'CacheDuration'設置爲零。無論如何,我認爲它必須對我的'VisibilityProvider'做。你認爲它可能有問題嗎?請看[代碼](http://bit.ly/sitemapprovider),作爲一個SiteMapProvider大師,我希望你在那裏找到問題。 – Shimmy 2015-07-21 17:32:36