【问题标题】:Combine, minimize and gzip for CSS and JavaScript files for ASP.NET MVC针对 ASP.NET MVC 的 CSS 和 JavaScript 文件合并、最小化和 gzip
【发布时间】:2011-01-10 21:41:49
【问题描述】:

美好的一天!

我正在寻找组合、最小化和 gzip CSS 和 JavaScript 文件的解决方案。它们似乎有两种形式:

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

一般我都可以。

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

提前致谢!

【问题讨论】:

    标签: asp.net-mvc gzip minimize


    【解决方案1】:

    这是我给你的建议:使用构建任务和 HTTP 缓存输出。

    在构建任务方面,您需要查看您最喜欢的 JavaScript 压缩程序(我最喜欢的是 Google Closure Minifier),它有一个命令行实用程序,您可以将其插入到您的项目文件、MSBUILD 文件或 NANT 文件中。与 CSS 相同(我个人使用 Yahoo! YUI Compressor)。如果您喜欢使用LESS,您当然可以将它与 YUI 压缩器结合使用。为了优化图像,我会使用optipng。有关于这些人如何在他们的个人网站上工作的说明。

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

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

    您很可能需要一个缓存破坏策略,以便您可以更改内容文件。您可以通过将随机参数传递给您的处理程序来做到这一点。有几种不同的方法可以解决这个问题……只需谷歌一下。

    希望这会有所帮助。

    【讨论】:

    • 感谢您的回复,我在手工组装此类管道以处理 CSS 和 JS(适用于 ASP.NET 和 PHP)方面玩了很多,您看到任何捆绑包/组件吗?跨度>
    • @artvolk “捆绑包/组件”是什么意思?
    • 我的意思是一些东西(库?dll?msbuild任务?)它以一种很好的方式将所有这些包装到VS中。
    • 使用 MSBUILD 中的 Exec 任务调用各种可执行文件进行优化。您将在项目文件(使用 MSBUILD)的 BeforeBuild 目标中执行此操作。例如,YUI Compressor 看起来像这样:
    【解决方案2】:

    我将telerik mvc components 用于中小型网站。使用 NuGet 添加和配置非常简单。

    【讨论】:

    • 感谢您的回复,您是指这个捆绑包的这一部分吗? telerik.com/products/aspnet-mvc/…
    • 是的。 Web 资产管理器负责处理所有这些。我正在使用它的开源版本。
    【解决方案3】:

    Moth 可以(除其他外)即时处理您的所有 javascript / css 请求。见Wiki: Javascript

    最重要的是,它还可以将所有 javascript 放在页面底部,包括您在局部视图中编写的部分! Wiki: Inline script.

    【讨论】:

      猜你喜欢
      • 2012-03-26
      • 1970-01-01
      • 1970-01-01
      • 2012-03-07
      • 1970-01-01
      • 2012-01-16
      • 2021-07-28
      • 2010-11-16
      • 1970-01-01
      相关资源
      最近更新 更多