似乎有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. NodeJS禁用缓存
- 6. Framework7:禁用缓存?
- 7. 禁用mysql缓存
- 8. 禁用ASP.net缓存
- 9. ASIHTTPRequest禁用缓存
- 10. Symfony2禁用缓存?
- 11. 想禁用闪存缓存?
- 12. 为缓存文件禁用APC缓存?
- 13. 禁用高速缓存中的缓存
- 14. 禁用页面缓存不会禁用资源缓存吗?
- 15. 为antd树禁用缓存
- 16. 禁用Apache Derby的缓存
- 17. 完全禁用JMeter缓存
- 18. 如何禁用缓存nginx
- 19. Drupal - 禁用CSS缓存
- 20. 如何禁用cocoapods缓存
- 21. Alamofire无法禁用缓存
- 22. 禁用TEXT表的缓存
- 23. iPhone禁用stringWithContentsOfURL的缓存
- 24. Blender:禁用插件缓存
- 25. 禁用AngularJS $ HTTP缓存
- 26. 禁用缓存Chrome扩展
- 27. 如何禁用SQLAlchemy缓存?
- 28. 禁用缓存YouTube视频
- 29. 如何禁用READ_XBUF缓存?
- 30. 禁用浏览器缓存
我也可以从控制器调用“Refresh”吗? – Shimmy 2015-07-20 19:31:35
这似乎并不存在于当前版本 – toddmo 2017-01-24 18:27:09