2011-07-04 31 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