似乎有MvcSiteMapProvider發生自動緩存。有沒有一種機制來禁用緩存?我們編寫了定製的緩存例程,我想通過這些例程來運行它,而不是依賴任何內置的緩存機制。禁用MvcSiteMapProvider緩存
3
A
回答
6
嘗試之前調用刷新呈現菜單或站點地圖。
<% var sm = Html.MvcSiteMap();
((MvcSiteMapProvider.DefaultSiteMapProvider)sm.Provider).Refresh(); %>
....
<%: sm.Menu(0, 1) %>
0
查看源代碼時,始終在構建站點地圖時創建緩存項目,將項目存儲在HttpContext.Current.Cache
中。此緩存項的生命週期由配置cacheDuration
中的屬性進行配置。如果該屬性被從配置省略,則默認爲5.嘗試該配置屬性設置爲0
<siteMap defaultProvider="MvcSiteMapProvider" enabled="true">
<providers>
<clear />
<add name="MvcSiteMapProvider"
type="MvcSiteMapProvider.DefaultSiteMapProvider, MvcSiteMapProvider"
cacheDuration="5" />
</providers>
</siteMap>
+0
不幸的是,沒有奏效。可能只是等待3.0最終版本,並自己修改源以刪除緩存。我寧願選擇禁用緩存,以便隨着新版本發佈到CodePlex,我可以繼續輕鬆更新MvCSiteMapProvider ... – Scott 2011-01-24 20:03:27
0
有點哈克但誰在乎:
foreach (var c in from object c in HttpContext.Cache where ((System.Collections.DictionaryEntry)c).Key.ToString().Contains("__MVCSITEMAP") select c)
{
HttpContext.Cache.Remove(((System.Collections.DictionaryEntry)c).Key.ToString());
break;
}
2
在MvcSiteMapProvider V4,緩存現在可以擴展或您自己的實現替換。看看我寫的以下博客文章。
MvcSiteMapProvider 4.0 - Extending the Cache
在它現在使用System.Runtime.Caching.ObjectCache,可以由你選擇的緩存管理器來代替一個抽象類的封面。
相關問題
- 1. 如何在MVCSiteMapProvider的某些節點上禁用緩存?
- 2. 禁用緩存
- 3. 禁用緩存
- 4. 禁用緩存
- 5. Codeigniter禁用緩存
- 6. ASIHTTPRequest禁用緩存
- 7. s3fs禁用緩存
- 8. Framework7:禁用緩存?
- 9. NodeJS禁用緩存
- 10. 禁用asp.net緩存
- 11. 禁用EclipseLink緩存
- 12. 禁用mysql緩存
- 13. 禁用ASP.net緩存
- 14. 禁用Shindig緩存
- 15. Symfony2禁用緩存?
- 16. 想禁用閃存緩存?
- 17. 爲緩存文件禁用APC緩存?
- 18. 禁用高速緩存中的緩存
- 19. Chrome緩存重寫angularjs禁用緩存
- 20. 禁用頁面緩存不會禁用資源緩存嗎?
- 21. Drupal - 禁用CSS緩存
- 22. iPhone禁用stringWithContentsOfURL的緩存
- 23. 如何禁用緩存?
- 24. 如何禁用緩存nginx
- 25. Yii禁用http緩存
- 26. 暫時禁用Django緩存
- 27. plone.app.caching和禁用RAM緩存
- 28. 禁用/刷新OleDbConnection緩存
- 29. 如何禁用緩存100%
- 30. 全局禁用緩存.NET
我也可以從控制器調用「Refresh」嗎? – Shimmy 2015-07-20 19:31:35
這似乎並不存在於當前版本 – toddmo 2017-01-24 18:27:09