2011-07-04 48 views
3

在Visual Studio中,當我們開發時,web.config文件通常會被修改,但我不知道修改了什麼,以及生產環境對性能的影響是什麼,如果配置部分很重要。Web.config生產環境性能 - 最佳實踐

例如:

<compilation> 
<compilers> 
<runtime> 
... 

有很多我認爲不是必需品部分,沒有它或另一個設計方案,可以提高生產環境的性能。

所以我的問題是:

你在web.config文件在生產環境中尋找到不降低性能,並具有光的配置文件?

什麼是最佳實踐?

感謝您的回答!

+1

您不能說web.config中的另外1個部分會影響性能,除非您測試並剖析這個併爲我們提供一些真實的測量結果。如果你不能測量任何差異,那麼問題就不存在。 :) –

+0

但是在生產環境中沒有調試選項,您的應用程序更快,不是嗎? – malinois

回答

1

web.config文件中的節數與性能無關。

爲了運行相同的應用程序,某些機器需要配置比其他機器更多的東西(因此尺寸不同)。

正如Hasan指出的那樣,web.config與機器配置文件合併在一起。你可能有一臺機器(稱之爲測試),它定義了machine.config中的東西,這個東西在你的生產配置中沒有定義。因此,對於測試,您可能不需要生產需要的某些部分。

此外,機器配置特定項目可能會有所不同。在網站場景中,通常使用常用的機器鍵來覆蓋機器配置文件。這不會對性能產生影響,但會影響您是否成功地對網站進行負載平衡。

要迭代:節的對性能無關緊要。另一方面,定義部分的內容是。


現在,如何提高性能:這是一個應用程序的基礎上的應用程序。對於生產,您需要關閉調試功能,並打開靜態內容的url壓縮之類的內容。

可能想要打開動態內容的壓縮,甚至配置某些目錄以通知瀏覽器內容可以緩存(如/ images,/ css或javascript)。順便提一句,這些通常會增加生產配置文件的大小,並且會產生一定的後果(比如想要更改css文件時),但通常會爲客戶端帶來更高的性能。

對於其他項目,您可能會關閉日誌記錄或使用完全不同的日誌記錄存儲提供程序。我們使用elmah,我們的開發盒配置爲內存存儲,而生產配置爲使用數據庫服務器。不一定是性能問題,但肯定是關注的一個問題。

這裏的重點在於應該使用配置文件來確保應用程序可以在特定的平臺/機器上執行。

+0

你有一些調試選項,壓縮等例子嗎? – malinois

+1

@malinois:這是非常特定的服務器。由於選項的根本性變化,IIS 6和7在web.config中有不同的部分。這只是一個例子,但是它特定於在IIS 7上進行壓縮:http://www.devwebpro.com/configuring-web-config-file-in-iis-7/除此之外,我建議去microsoft.com和準確瞭解您的特定配置選項適合您的環境。 – NotMe

3

在Web.Config中,您可以配置您是否想要調試裝配或釋放裝配。您可以調整WCF,線程池的性能。您可以配置日誌記錄等。

Visual Studio不會自動爲您更改關鍵設置。但它唯一的作用是在試圖調試應用程序時啓用調試程序集。在這種情況下,它會要求您確認。對於生產,您可以禁用調試程序集。

我建議你使用diffmerge工具來查看上次提交後添加的部分。但是請注意,較短的配置並不一定意味着更好的性能。

您的web.config與包含許多節的machine.config合併在一起。因此,不要放置段通常意味着你不修改machine.config中的默認值。添加部分並不意味着您要添加新內容。它只意味着你正在配置一些會有其他默認設置的東西。

就最佳實踐而言。建議使用一個簡短的配置文件以使其更易於維護。無論如何,如果它們默認默認,或者在machine.config中,那麼在config中指定缺省值沒有意義。 VS2010已經避免了不必要的部分。

+0

感謝您的回答。我已經比較了我的web.config en生產環境和開發環境,生產環境沒有很多部分,但是很有用。這麼多部分不是必需的。 – malinois

+0

我不確定爲開發/生產配置非常不同的配置是個好主意 - 您如何測試生產配置是否正確?除非有很好的實際原因,否則我不會偏離另一個。 – driushkin