預熱ASP.NET MVC 的View

来源:https://www.cnblogs.com/wwwblender-3dcn/archive/2018/12/24/10170261.html
-Advertisement-
Play Games

ASP.NET MVC 的View 預設是Load on Demand(按需載入),也就是說View 第一次要Render 的時候才會去載入跟編譯,這個就會造成一個現象,即使Web 應用程式已經完成啟動,在瀏覽頁面的時候也是會感覺到一點延遲,尤其Web 應用程式部署在Azure App Servic ...


ASP.NET MVC 的View 預設是Load on Demand(按需載入),也就是說View 第一次要Render 的時候才會去載入跟編譯,這個就會造成一個現象,即使Web 應用程式已經完成啟動,在瀏覽頁面的時候也是會感覺到一點延遲,尤其Web 應用程式部署在Azure App Service 上更為明顯,既然這樣,那我們就在Web 應用程式啟動時候,把所有View 載入跟編譯,然後Render 一次就行了,我們來看看怎麼做?

要Render 一個頁面有時候還會牽扯到一些外部資源(Database、File...等),這個就不在討論範圍,我們只單純關註View 的部分,我會以ASP.NET MVC 的範本專案來當做我的範例,使用的Azure App Service 方案是B1。

新增預熱用的Action

這個預熱用的Action 可以隨意看要新增在哪個Controller 底下,不一定要是與預熱的View 有相關的Controller,為了看出有無預熱的差異,在這邊我新增一個WarmUpController 放置預熱的程式碼,接下來我們就去找出我們Web 應用程式底下所有的View,然後透過ViewEngine 把它們逐一Render 一次,就完成預熱的程式。

View 的編譯並不是一個檔案編譯成一個組件,而是一個目錄編譯成一個組件,舉例來說,~/Views/Home/ 底下有三個.cshtml 檔案:Contact.cshtml、Index.cshtml、About.cshtml,它們三個會被編譯在同一個組件。

應用程式初始化(​​Application Initialization)

有關於應用程式初始化,就參考微軟官方的說明,我們在這邊就直接動手在Web.Config加入以下設定,讓Web應用程式在啟動時對/WarmUp發出請求。

 

我們來比較一下有無預熱的結果,原先在Web 應用程式完成啟動後,首頁下載完成的時間為1.94s,在預熱之後減少到78ms,可以看出View 的初次渲染真的很花時間。

但是這個會拉長Web 應用程式啟動的時間,不過我們可以透過升級Azure App Service 方案至少到S 等級,然後部署我們的Web 應用程式到預備位置,預熱完成之後再自動交換到Production 環境來避開此問題。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • super(類名, self) 從某個類開始找下一個MRO 第一步: 先找一下整個程式的MRO 用c3演算法查找: 查找順序如上,知道了執行順序就可以按流程執行了 ...
  • 1、在使用query和update在什麼時候使用帶Connection參數的? 在已經獲取到了DataSource 對象之後,不必使用帶Connection參數的方法 DataSource dataSource = DBCPUtil.getDataSource(); QueryRunner quer ...
  • 【寫在前面】正直青春年少的你,遇到了你的她了嗎?還是你也和我們今天的主人公一樣,在最美好的年級,正在為你的初衷努力著,堅持著,奔波著..... 作者:李偉 我的黑客時代 01 大學專業是電子信息工程,不甚喜歡。我更喜歡在室友上課的時候,獨自一人待在宿舍抓肉雞,併為之廢寢忘食。每天拿著掃描器,導入成千 ...
  • 轉自:https://blog.csdn.net/flyoutsan/article/details/52811095 cmd變數通過set設置變數,通過可以使用set /?查看有關變數的幫助文檔。 接下來談set的用法: 1.set 變數名=值 值可以包含空格、一直到命令結束,也可以是Ctrl+G ...
  • java調用webservice介面方式有多種,本人很懶,測試一種滿足我的需求,故為試驗其他方法,僅供參考 一:工具 MyEclipse,C#編碼發佈的webservice介面 二:步驟 1、打開myeclipse 2、新建一個Web Project 項目 3、引用webservice介面: ①選中 ...
  • @ "TOC" 項目介紹 伏羲之光是一個基於Opencv+GDAL的圖像處理軟體,採用ASP.NET Core 2.1 開發程式,可以生成跨平臺可執行程式。 最初的幻想 我們希望打造一個跨平臺圖片“操作系統”: 1. 純命令行 調用 ,簡單暴力; 2. 使用ASP.NET Core 開發,跨平臺能力 ...
  • 作者:依樂祝 原文鏈接:https://www.cnblogs.com/yilezhu/p/10170712.html 今天在寫CzarCms的UnitOfWork的使用使用到了這個TransactionScope事務,因此對它進行了相關資料的查閱並記錄如下,希望對大伙在.NET Core中使用有所 ...
  • 1 Vs Code 下載地址:https://code.visualstudio.com/ 2 安裝好Vs Code,點擊啟動,點擊File-> Open Folder 打開項目 3 點擊Extensions 輸入插件的名稱,然後Install 安裝插件。插件安裝完成後點擊Reload,插件生效。 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...