2008-08-25 157 views
12

我第一次在生產網站服務器上加載網站時,啓動非常慢,後續網頁加載非常快(包括主頁)。Asp.net網站首次啓動速度很慢

我預編譯了網站,但沒有任何變化。

我在應用程序啓動時沒有任何代碼。 我沒有緩存項目。

任何想法?我如何知道發生了什麼?

回答

11

這只是你的應用程序域加載和加載任何二進制文件到內存中。此外,它正在初始化靜態變量,所以如果你有一個靜態變量從數據庫中加載大量數據,可能會花費一些時間。

+0

當然,這是一個設計缺陷,當開始一個網站是慢的? – 2017-09-20 11:48:46

0

這聽起來很像背景編譯;但如果你正在編譯,那應該不是問題。

我會看看的第一件事是你的ORM(如果有的話)。特別是,NHibernate有一個嚴重的啓動懲罰,因爲它在啓動時在後臺運行多個編譯器,將數據層中的每個類轉換爲它自己的內存中的程序集。

2

當您發佈網站時,您是否選擇在發佈網站的設置中將網站設置爲「可更新」?如果我沒記錯,aspx/ascx文件也需要編譯,如果它們是「可更新的」,那麼第一次啓動將導致重新編譯這些資源。

0

只是在達倫快點頭。這是進行DLL更新後.NET應用程序的典型行爲。在初始加載之後,所有東西都應該很好地壓縮。

0

當您說「預編譯」該網站時,您是使用aspnet_compiler實用程序進行預編譯還是僅使用Visual Studio中的「生成網站」選項?

如果您不是執行前者,我推薦giving it a spin。再加上Web Deployment Projects,您應該可以更輕鬆地爲每個版本部署您的網站。

0

最初的緩慢是有兩件事情:

  • 在AppDomain正在安裝
  • ASP.NET是解析和編譯ASPX頁面。
  • 全局上下文正在初始化。

這是ASP.NET的正常行爲。

0

@Mickey:不,它被關閉。我需要打開它才能找到?

跟蹤日誌會顯示每個操作需要多長時間。它可以幫助你找到需要這麼長時間的東西。

Here是一個可能幫助您安裝它的鏈接。

1

請嘗試清除您的事件日誌?

1

確保你在'release'中發佈你的應用程序,而不是'debug'。我注意到這大大減少了加載時間。 web.config文件將被更新。