ASP.NET MVC中的CSS和JavaScript文件可以通过合并、最小化和压缩来优化。

5

你好!

我正在寻找一种解决方案来合并、最小化和压缩CSS和JavaScript文件。它们似乎有两种形式:

  • 以ASP.NET处理程序/模块的形式,实时处理文件(带有缓存结果)
  • 以VS构建任务的形式(在构建时执行处理)

通常我都可以接受。

我已经看过很多解决方案了(我经常使用这篇文章中的ASP.NET处理程序:http://www.codeproject.com/KB/aspnet/httpcompression.aspx),但也许有些“必备”的东西出现了,我错过了。

提前感谢!

3个回答

6

我的建议是:使用构建任务并对输出进行HTTP缓存。

在构建任务方面,您需要查看您最喜欢的JavaScript缩小器(我最喜欢的是Google Closure Minifier),它具有命令行实用程序,您可以将其插入到项目文件、MSBUILD文件或NANT文件中。CSS也是同样的道理(我个人使用Yahoo! YUI Compressor)。如果您想使用LESS,您可以将其与YUI压缩器结合使用。要优化图像,我会使用optipng。这些工具的各自网站上都有使用说明。

现在,在您将这些文件全部优化之后,您需要使用MVC的处理程序或控制器操作来输出它们。为了设置过期时间,以便随后的请求将默认使用第一次请求下载的文件,您需要在代码中运行以下内容:

Response.ExpiresAbsolute = DateTime.Now.AddYears(1);

很可能你会需要一个缓存刷新策略,这样你才能更改内容文件。你可以通过向处理程序传递一个随机参数来实现这一点。有几种不同的方法可以做到这一点...只需在Google上搜索即可。

希望这可以帮到你。


谢谢您的回复,我已经尝试过手动组装这样的管道来处理CSS和JS(包括ASP.NET和PHP),您有没有看到任何捆绑包/组件? - artvolk
@artvolk,“bundles/components”是什么意思? - zowens
我的意思是,有一种方式(库?dll?msbuild任务?),可以将所有这些内容以良好的方式包装到VS中。 - artvolk
使用MSBUILD中的Exec任务调用各种可执行文件进行优化。您可以在项目文件(使用MSBUILD)中的BeforeBuild目标中执行此操作。例如,YUI Compressor如下所示:<Exec Command="java -jar yuicompressor.jar --type css -o "myfile.css" "%myfile.css"" /> - zowens

2
飞蛾可以在运行时处理所有JavaScript / CSS请求,包括Wiki:JavaScript中所述的其他功能。
最重要的是,它还可以将所有JavaScript放置在页面底部,包括您在部分视图中编写的部分! Wiki:内联脚本

2
我正在为中小型网站使用Telerik MVC组件。使用NuGet添加和配置非常简单。

谢谢您的回复,您是指这个捆绑包的哪一部分吗?http://www.telerik.com/products/aspnet-mvc/web-asset-managers.aspx#combination - artvolk
是的。Web资产管理器就是处理所有这些的工具。我正在使用它的开源版本。 - Brian Cauthon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接