2

我们有几个大型解决方案,每个都有大约 40 个单独的项目(类库和嵌套网站)。完全重建全部大约需要 2 分钟。

系统的几个规格:

  • 视觉工作室 2005,C#
  • 主要项目是 Web 应用程序项目
  • 共 40 个项目(4 个 Web 项目)
  • 我们使用内部 VS 网络服务器
  • 我们广泛使用用户控件,一直到包含文本框的用户控件
  • 我们有几个内联 Web 项目允许我们进行部分部署
  • 大约 120 个用户控件
  • 大约 200.000 行代码(包括 HTML)
  • 我们使用 Source Safe

我想知道的是如何减少第一次使用浏览器访问网站所需的时间。而且,我不是在谈论完全部署后 - 我是在谈论对代码、构建、刷新浏览器进行小的更改。

第一次命中,大约需要 1 分 15 秒才能恢复数据。

为了加快速度,我对 Ram 磁盘进行了一些实验,特别是更改了 web.config 中的 <compilation> 属性,将 tempDirectory 设置为我的 Ram 磁盘。这确实加快了速度。不过有趣的是,这在浏览器第一次点击时完全删除了所有 IO 访问。

备注
我们在开发过程中从不进行完整编译,只进行部分编译。例如,编译正在处理的类库,然后编译主站点,然后将二进制文件从类库复制到 bin 目录。

我知道在更改关键文件(例如 bin dir)后,asp.net 引擎需要解析所有 ascx/aspx 文件,但是,我不明白为什么只有一个库 dll需要这样做被修改。

因此,任何人都知道一种方法:对解决方案进行细分,以提供更快的首次点击或微调配置文件或其他内容中的设置。

而且,再次:我只谈论开发,而不是生产部署,因此不适用预构建编译选项。

谢谢, 鲁文

4

1 回答 1

2

哇,120 个用户控件,其中一些只包含一个 TextBox?这听起来像很多代码。

当您更改库项目时,依赖于该库项目的所有项目都需要重新编译,并且依赖于它们的每个项目等等都需要重新编译。知道您只对不影响所有用户控件的函数进行了 1 行更改,但编译器不知道这一点。

而且您可能知道 ASPX 和 ASCX 文件仅在第一次点击 Web 应用程序时编译。

通过在另一个库项目中将您的 ASCX 文件改为复合控件,可能会获得可能的速度改进。然后将在编译时(如果您愿意的话)而不是在 Web 应用程序加载时编译它们。

于 2008-09-08T11:12:25.090 回答