ASP.NET MVC性能最適化まとめ

4117 ワード

プロジェクトの各機能の増加に伴い、システムの性能はますます悪化し、システムの性能最適化を決定した.パフォーマンス最適化に関する作業を記録します.
 
一、性能問題のモニタリング方法:
1.dotTrace:プログラム実行中の各メソッドの呼び出し状況や時間などを記録できる性能テストツールで、Webサイトのロード状況を記録できないようです.
2.miniProfiler:StackOverflowのオープンソース製品で、サイトのロード状況だけでなくEFの実行状況も記録できるように、プロジェクトで適切な構成を参照する必要があります.開発過程で応用するのに適している.Webサイト:
http://miniprofiler.com/
3.Chromeの開発ツールでは、各リソースのロード状況を監視できます.
 
二、最適化方法:
1.静的リソースにクライアントキャッシュを追加します.
<staticContent>

      <remove fileExtension=".woff" />

      <!-- In case IIS already has this mime type -->

      <mimeMap fileExtension=".woff" mimeType="application/x-font-woff" />

      <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="365.00:00:00" />

    </staticContent>

 
2.OutputCacheを追加します.
filters.Add(new OutputCacheAttribute

            {

                NoStore = true,

                Duration = 10,

                VaryByParam = "*"

            });

 
3.圧縮合併JS,CSS:
ScriptBundle,StyleBundleを利用してBundleConfigファイルに参照が必要な静的リソースを登録する.
 
4.EFに二次キャッシュを追加する:
DLLパッケージ:EFCache.dll
プロジェクトに次のクラスを追加します.具体的な手順は参照してください.
http://blog.3d-logic.com/2014/03/20/second-level-cache-for-ef-6-1/
public class Configuration : DbConfiguration

    {

        internal static readonly InMemoryCache Cache = new InMemoryCache();



        public Configuration()

        {

            var transactionHandler = new CacheTransactionHandler(Cache);



            AddInterceptor(transactionHandler);



            Loaded +=

              (sender, args) => args.ReplaceService<DbProviderServices>(

                (s, _) => new CachingProviderServices(s, transactionHandler));

        }



        public static int GetCountOfCache()

        {

            return Cache.Count;

        }

    }