2009-07-18 142 views
1

我们正在开发一个我正在开发的Web项目中的大型版本,并且我开始越来越多地考虑JavaScript/css性能和版本控制。到目前为止,我有几个高层次的想法:ASP.NET中的资源(JS,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

回答

3

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

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

+0

非常聪明的想法。 – YOMorales 2011-07-15 00:19:46

0

另外1),微软已经内置支持embedding resource files into DLL。当您的项目更改并重新编译时,这将始终得到更新。

问题是,您无法控制缓存和文件名。调试时,很难选择哪一个调试什么时被称为“webresource.axd”。那是地狱。

很想看看别人怎么做。

0

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

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

0

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

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

+0

感谢您的评论。 经过另一个小时的研究,这是我所倾向的。作为奖励,我想我可以将JSLint(仅限错误)集成到我们的构建过程中。 只是好奇 - 你是否以相同的方式处理配置?我介于使用wdproj'web config replacements'(简单)和编写/找到一个工具在我们的构建过程(更具可配置性)内执行它。 – JoeB 2009-07-18 02:34:11