這篇文章的主要內容來源於.NET文檔,此處翻譯前4條內容,其餘內容會陸續貼出來git
儘可能使用緩存github
詳情請查看:ASP.NET Core 中的響應緩存.api
瞭解」熱代碼路徑」緩存
」熱代碼」定義爲訪問頻繁而且耗時較長的代碼。」熱代碼」對性能影響很明細。架構
避免使用阻塞調用併發
ASP.NET Core 程序應該被設計成同時處理多個請求。異步API使用一個小線程池能夠處理上千個併發請求,而不會阻塞。這樣請求線程能夠去處理其餘請求,而不是等待一個長時同步任務完成。異步
ASP.NET Core 程序的一個常見的性能問題是,阻塞了本該異步執行的調用。不少同步調用會致使線程池飢餓,增大相應時間。async
不要像下面這樣作:性能
應該這樣作:線程
性能分析器 PerfView,能夠用來查找頻繁加入線程池的線程。
Microsoft-Windows-DotNETRuntime/ThreadPoolWorkerThread/Start 代表一個線程加入了線程池。
返回IEnumerable<T> 仍是 IAsyncEnumerable<T>
若是Action Result返回IEnumerable<T>,那麼序列化器以同步的方式處理集合迭代,這樣阻塞調用可能會致使線程池飢餓,爲避免同步迭代,可在返回迭代以前調用 ToListAsync()。
從ASP.NET Core 3.0開始,IAsyncEnumerable<T>做爲異步枚舉,可取代IEnumerable<T>。