2013-02-28 90 views
4

我試圖在我們的ASP.Net應用程序中調試一個問題,即第一頁訪問可能需要長達五分鐘的時間。這個網站運行在.Net 3.5中,有100個ascx控件和25個aspx頁面,所以它不小。在什麼情況下清除了「Temporary ASP.Net Files文件夾」?

我注意到,當該網站加載臨時ASP.Net文件文件夾時正在重新填充真的很慢。完全加載並運行該文件夾大約爲50到70 MB,其中包含2000到3000個文件。

我有點困惑,關於如何以及何時該文件夾被清除?從空白文件夾開始,該站點需要5分鐘才能加載。但是在定期重新編譯時,可能會更改一兩個文件,重建後30秒內網站就會出現。

我不明白什麼時候該文件夾被清除 - 有時甚至在我運行一個乾淨的和重建所有的解決方案,與iisreset和web.config更改拋出的好措施,該文件夾網站重新加載時的文件數量幾乎與之前相同,只需要30秒即可完成。 (我們正在使用web.config中的'optimizeCompilations'標誌)

其他時候,在其他構建環境下我無法解釋,我們又回到5分鐘加載時間,因爲文件夾完全重建。

這個文件夾什麼時候被清理出來,有什麼我可以做的,以加速其重新填充時間,當它需要從頭開始? (在5分鐘內70兆字節似乎有點慢?)

+0

僅在需要時纔將頁面轉換爲代碼。我不能相信,你的第一個請求涉及所有頁面和所有控件,以便一次編譯所有內容。這是不可能的。相反,如果您完全清除臨時文件夾,則應該只會看到與第一個請求對應的這些文件。在任何情況下都不需要5分鐘。可能還有別的事情你沒有提到或者你沒有意識到。 – 2013-02-28 19:34:16

+0

@Wiktor Zychla:你確定這些頁面只是按需編譯的,並不是所有的東西都是在第一次訪問時立即編譯的?當我清除Temporary ASP.Net文件夾並首次訪問我的網站時,整個文件夾被重新創建,大約有1800個條目。也許有一個編輯標誌決定了這種或那種方式? – larryq 2013-02-28 20:43:16

+0

我99%確定。你確定應用程序啓動時沒有任何hacky代碼實際上強制重新編譯嗎? – 2013-02-28 21:11:23

回答

0

你確定你沒有在啓動時做任何事情,比如預編譯整個站點嗎?

搜索你的代碼庫這樣的事情:

aspnet_compiler -p

檢查您的Global.asax文件中看到你在做什麼啓動?

+0

** aspnet_compiler -p **或***編譯debug =「false」 targetFramework =「4.5。1" defaultLanguage = 「C#」 optimizeCompilations = 「真」 批次= 「真」 maxBatchGeneratedFileSize = 「2147483647」 maxBatchSize = 「2147483647」 numRecompilesBeforeAppRestart =「2147483647 *** – Kiquenet 2015-07-09 07:42:34

相關問題