【问题标题】:Web.config production environment performance - Best practicesWeb.config 生产环境性能 - 最佳实践
【发布时间】:2011-09-28 01:35:39
【问题描述】:

在Visual Studio中,我们开发的时候经常修改web.config文件,但是不知道修改了什么,生产环境对性能有什么影响,配置部分是否重要。

例如:

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

我认为有很多部分不是必需的,没有它或有其他配置,可以提高生产环境的性能。

所以我的问题是:

您在生产环境中的 web.config 文件中寻找什么以不降低性能并拥有轻量级的配置文件?

最佳实践是什么?

感谢您的回答!

【问题讨论】:

  • 您不能说 web.config 中的另外 1 个部分会影响性能,除非您对此进行测试和分析并为我们提供一些真实的测量结果。如果您无法衡量任何差异,那么问题就不存在。 :)
  • 但是如果在生产环境中没有调试选项,您的应用程序会更快,不是吗?

标签: c# .net visual-studio performance production-environment


【解决方案1】:

在 Web.Config 中,您可以配置是要调试程序集还是发布程序集。您可以调整 WCF、线程池的性能。您可以配置日志记录等。

Visual Studio 不会自动为您更改关键设置。然而,它唯一能做的就是在您尝试调试应用程序时启用调试程序集。在这种情况下,它会要求您确认。对于生产,您可以禁用调试程序集。

我建议您使用 diffmerge 工具查看自上次提交以来添加了哪些部分。但是请注意,更短的配置并不一定意味着更好的性能。

您的 web.config 与具有许多部分的 machine.config 合并。因此,不放置部分通常意味着您没有修改 machine.config 中的默认值。添加部分并不意味着您要添加新内容。这仅意味着您正在配置一些默认设置。

就最佳实践而言。建议有一个简短的配置文件以使其更易于维护。如果它们是隐式默认值或者无论如何都在 machine.config 中,那么在配置中再次指定默认值是没有意义的。 VS2010 已经避免了不必要的部分。

【讨论】:

  • 感谢您的回答。我比较了我的 web.config 和生产环境和开发环境,生产环境没有很多部分,但它可以工作。这么多部分不是必需的。
  • 我不确定为开发/生产使用非常不同的配置是个好主意 - 你如何测试生产配置是否正确?除非有充分的实际理由,否则我不会偏离另一个。
【解决方案2】:

web.config 文件中的节数与性能无关。

为了运行相同的应用程序,有些机器需要配置比其他机器更多的东西(因此存在大小差异)。

正如 Hasan 所指出的,web.config 与机器配置文件合并。您很可能有 1 台机器(称为测试)在它的 machine.config 中定义了在您的生产配置中未定义的东西。因此,对于测试,您可能不需要生产所需的某些部分。

此外,特定项目的机器配置可能会有所不同。在网络场场景中,通常的做法是使用通用机器密钥覆盖机器配置文件。这不会影响性能,但会影响您是否要成功地对站点进行负载平衡。

迭代:部分的数量对性能无关紧要。另一方面,已定义部分的内容是。


现在,如何提高性能:这是在逐个应用程序的基础上进行的。对于生产,您需要关闭调试,并打开静态内容的 url 压缩等功能。

可能还想为动态内容打开压缩,甚至配置某些目录以通知浏览器内容是可缓存的(如 /images、/css 或 javascript)。顺便说一句,这些通常会增加您的生产配置文件的大小并产生某些后果(例如当您想要更改 css 文件时),但通常会提高客户端的性能。

对于其他项目,您可能会关闭日志记录或使用完全不同的日志记录存储提供程序。我们使用 elmah,我们的开发箱配置为内存存储,而生产配置为使用数据库服务器。不一定是性能问题,但肯定是一个值得关注的问题。

这里的重点是,应该使用配置文件来确保应用程序可以在该特定平台/机器上执行。

【讨论】:

  • 你有一些调试选项、压缩等的例子吗?
  • @malinois:这是非常特定于服务器的。由于选项的根本变化,IIS 6 和 7 在 web.config 中有不同的部分。这只是一个示例,但它特定于 IIS 7 上的压缩:devwebpro.com/configuring-web-config-file-in-iis-7 除此之外,我建议您访问 microsoft.com 并准确了解您的环境的特定配置选项。
猜你喜欢
  • 1970-01-01
  • 2019-10-26
  • 2022-01-14
  • 2011-07-14
  • 1970-01-01
  • 2023-01-30
  • 2016-02-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多