私は可能な限り少しのパフォーマンスを絞り出そうとしています。そのため、カスタム ViewLocationCache を見ていました。
デフォルトのものはルックアップを に保存します。HttpRuntime.Cache
可能であれば、そこに関連するオーバーヘッドを回避したかったのです。Html.RenderPartial
主に、ループで呼び出すビューがいくつかあるためです。
私がやろうと思ったのは、ConcurrentDictionary
代わりに a を使うことでした。私は 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;
}