簡體   English   中英

ASP.NET MVC5每個Razor Page在第一次加載時非常慢

[英]ASP.NET MVC5 each Razor Page very slow on first load

這與第一個請求到達時的延遲體驗不同,但這是每次第一次訪問基於Razor的視圖時所經歷的延遲,可能需要一兩秒鍾。 對該視圖的所有后續請求都非常快。 即使對於沒有進行任何編程工作的簡單視圖(例如訪問數據庫等),也會發生這種情況。

我已經在配置文件中的system.web下的編譯標記中確保了debug=false

我還通過Global.asax刪除了設置Razor作為唯一的視圖引擎

什么可能導致這種延遲? 這似乎是舊的asp.net'網站'在它轉移到'web應用程序'之前經歷的一個問題,其中每個.aspx.cs代碼隱藏都是在部署而不是在運行時編譯的。 Razor還會受此影響嗎?

該問題是由Razor視圖的解析和編譯引起的。 一旦編譯了視圖,它們就會很快執行。 視圖僅在第一次查看請求時進行解析和編譯,或者自上次編譯后視圖已被修改。

您可以通過將視圖作為發布過程的一部分進行預編譯,在已部署的WebApp上解決此問題。 請參閱下圖,了解如何使用標准發布對話框在VS2012中執行此操作。

如果您願意,可以選擇可更新選項,但對於生產站點,我不推薦它。

在此輸入圖像描述

Webgrease。 它會在首次加載時縮小生產js和css包,然后緩存它們。 問題是,當縮小有錯誤時,它會嘗試每次編譯,運行那里的任何錯誤例程。 沒有錯誤報告,發現這種情況的唯一方法是直接打開引用並查看如下內容:

/* Minification failed. Returning unminified contents.
(69,1): run-time error CSS1019: Unexpected token, found '@import'
(69,9): run-time error CSS1019: Unexpected token, found '"variables.less"'
(70,1): run-time error CSS1019: Unexpected token, found '@import'

哪個(在上面的例子中)顯示你發布了不必要的.less或.sass文件 - 這通常是通配符捆綁的結果。 通配符捆綁將花費您比節省更多的時間。

解析視圖可能很慢。 您是否嘗試過使用RazorGenerator編譯視圖?

在NuGet包管理器控制台中鍵入install-package RazorGenerator ,或在此處通過NuGet手動安裝它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM