1

我们即将在我从事的 Web 项目中发布一个大版本,我开始越来越多地考虑 javascript/css 性能和版本控制。到目前为止,我有几个高层次的想法:

  1. 编写(或自定义)一个 http 处理程序来为我执行此操作。这显然还必须处理缓存,以证明将发生的动态 IO 是合理的。
  2. 将这些步骤添加到仅为部署运行的自定义 msbuild 脚本中。

我还在考虑为我部署到的每台服务器自动生成配置文件,这适用于第二个想法。我看到第一个想法的主要优势是我可以动态处理版本控制(至少这是我在底部的一个链接所说的,我还没有说服自己这确实有效)。

无论如何,我很好奇这些问题是否已经解决。我希望得到任何反馈。谢谢!

以下是我目前一直在查看的一些资源:

http://madskristensen.net/post/Combine-multiple-stylesheets-at-runtime.aspx http://madskristensen.net/post/Remove-whitespace-from-stylesheets-and-JavaScript-files.aspx http:// www.west-wind.com/WebLog/posts/413878.aspx http://svn.offwhite.net/trac/SmallSharpTools.Packer/wiki

4

4 回答 4

3

您将此作为您拥有的持续集成构建过程的一部分。

将所有 JS 与之前检查的反转进行比较,对于每个有更改的 JS,调用该 JS 文件上的 YUI 压缩器并用当前修订号命名输出。将该文件添加到您的存储库,并更改配置文件以具有该 js 文件的最新修订号。然后您将编写一个导入 js 文件的自定义控件。此控件将在开发机器上运行时使用未压缩的 js,或者在部署设置上运行时使用配置文件中带有修订号的压缩文件。

于 2009-07-18T06:56:46.043 回答
0

除了 1),Microsoft 还内置了对将资源文件嵌入 DLL的支持。当您的项目更改和重新编译时,这将始终得到更新。

问题是,您无法控制缓存和文件名。调试时,当所有内容都称为“webresource.axd”时,很难选择调试哪个。那是地狱。

也很想看看别人是怎么做的。

于 2009-07-18T01:16:44.817 回答
0

就个人而言,我宁愿将其作为构建过程的一部分来完成,以避免在每个请求上动态执行此操作的性能成本。我想您可以通过实施适当的缓存来减轻打击,但是为什么要麻烦... IIS 已经可以为您处理(除非您不是在 IIS 之上运行,我猜)。

作为一般建议,如果您想加快浏览器渲染速度,Steven Souders 谈到的事情也很棒。如果你还没有,看看这个

于 2009-07-18T01:37:25.093 回答
0

我的团队最近不再将脚本保留为嵌入式资源,我们对结果非常满意。是的,您可以使用处理程序组合和缩小它们,但这有点麻烦,尤其是当您想从单独的域托管它们时。

我们现在要做的是将所有控制脚本文件分开,然后在构建过程中使用js-builder之类的工具来组合和缩小它们。我们实际上从该工具中输出了两个文件,一个简单组合用于调试,一个组合并缩小用于生产使用。

于 2009-07-18T02:07:15.257 回答