ASP.NET MVC 性能優化總結

隨着項目中各項功能的增長,系統性能愈來愈糟糕,因而決定對系統作性能優化。現性能優化的相關工做記錄下來。
 
1、如何監測性能問題:
1. dotTrace: 一款性能測試工具,可以記錄程序執行過程當中各個方法的調用狀況及所花時間等,好像不能記錄網站加載狀況。
2. miniProfiler: StackOverflow的一款開源產品,須要在項目中引用作相應的配置,不光可以記錄網站的加載狀況,還能記錄EF的執行狀況。適合在開發過程當中應用。網址: http://miniprofiler.com/
3. Chrome的開發工具可監控各項資源的加載狀況。
 
2、優化方法:
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;
        }
    }
相關文章
相關標籤/搜索