我试图挤出一点点性能,因此我正在查看自定义 ViewLocationCache。
默认值将查找存储在 中HttpRuntime.Cache
,如果可能的话,我想尽量避免那里相关的开销。Html.RenderPartial
主要是因为我有几个循环调用的视图。
我想做的是使用 aConcurrentDictionary
代替。我查看了 MVC 源代码,我看不到也想不出这会不好的原因。我部署到 Azure,所以 AppDomain 保证在部署时得到重置,我不需要担心坏命中。
关于为什么我不应该这样做,我是否错过了一些痛苦的显而易见的事情?
//fastCache is a static ConcurrentDictionary<string, string>
public string GetViewLocation(HttpContextBase httpContext, string key)
{
return fastCache[key];
}
public void InsertViewLocation(HttpContextBase httpContext, string key, string virtualPath)
{
fastCache[key] = virtualPath;
}