ASP.NET - 脚本和 css 压缩

Posted

技术标签:

【中文标题】ASP.NET - 脚本和 css 压缩【英文标题】:ASP.NET - script and css compression 【发布时间】:2010-10-27 08:16:27 【问题描述】:

在 ASP.NET 中是否有任何本机压缩(用于 javascript/css 文件)?

【问题讨论】:

哪种压缩方式:压缩/打包还是 gzip/deflate? 不确定缩小/打包和 gzip/deflate 之间的区别。我正在寻找的是 asp.net 压缩脚本和 css 文件的某种本机方式,因此从服务器请求的实际文件更小。 【参考方案1】:

试试 Chirpy。它可以混合、缩小和验证您的 javascript、样式表和无点文件。 您可以使用 YUI Compressor 或 Google Closure Compiler。

http://chirpy.codeplex.com/

或者,欲了解更多信息,请查看:

http://www.weirdlover.com/2010/05/22/visual-studio-add-in-for-dotless-js-and-css-files/

【讨论】:

嘿怪人!这啁啾的东西看起来很神奇。是否也可以让它在运行时压缩文件?我的意思是,在每个请求中,服务器将压缩指定的文件(在 chirp.config 中)并在响应中返回缩小的混搭版本......可能吗? 嘿,丹——我们正在构建类似的东西。但是,与此同时,您可以查看 SquishIt、Combres,或者您可以使用这个生锈的车轮:weirdlover.com/2010/05/10/… SquishIt & Combres 看起来不错,但似乎还没有太多的下载/社区支持......知道什么时候有这个功能的下一个版本?谢谢! 我曾经使用过 Combres,虽然效果很好,但 Chirpy 的效果要好得多。没有更多的运行时开销......这真是太棒了。【参考方案2】:

在Professional ASP.NET 3.5 的附录中,Scott Hanselman 谈到了Packer for .NET。这将与 MSBuild 集成并为生产部署等打包 javascript 文件。

【讨论】:

看来我们同时发布了相同的答案 :-) 看起来 Packer 是 .NET 中最接近本机压缩的东西。 Packer 页面上有一个“Packer 与 JSMin”部分,它表示 JSMin 可以比 Packer 更高效。在 Yahoo Compressor 页面 (developer.yahoo.com/yui/compressor) 上,它指出 Yahoo 压缩器比 JSMin 更高效,因此看起来 Yahoo 压缩器可能是一个不错的候选者,即使它不是原生于 .NET 环境。 来自 Packer 的网站:“虽然 Packer 可以创建一个小得多的输出文件,但打包不符合严格语法的 JavaScript 可能会出现更多问题”......听起来很可怕,好像它可能会破坏我的javascript?【参考方案3】:

您可以使用Packer。

此实用程序支持 JavaScript 压缩和/或“缩小”,以及 CSS“缩小”。

它可用作命令行实用程序或 MSBuild 任务。 通过这种方式,您可以将其集成到您的构建过程/Visual Studio 项目中。

【讨论】:

【参考方案4】:

在 IIS 中支持 Gzip/Deflate 压缩,兼容除 IE6 之外的所有现代浏览器。对于 IIS 7,请查看此页面:http://www.iis.net/ConfigReference/system.webServer/httpCompression

【讨论】:

【参考方案5】:

除了其他答案和 cmets,您可以使用 Yahoo! 的 YUI Compressor 并将其设置为 MSBuild Task 以将其集成到您的构建和部署过程中。

【讨论】:

【参考方案6】:

尝试StyleManager 进行 CSS 组合和缩小。它在引擎盖下使用 YUI Compressor。

它的用法很像 asp.net 的 ScriptManager,所以很快就习惯了。添加到您的项目中也很容易,只需一分钟。

最重要的是 - 它还结合了您的 CSS 文件。因此,无需下载 10 个 CSS 文件,只需 1 个,这些文件也将被压缩等等。

【讨论】:

【参考方案7】:

我已经为我写了一些东西,你可以在这里下载: http://www.picnet.com.au/blogs/Guido/post/2009/12/10/Javascript-runtime-compilation-using-AspNet-and-Googles-Closure-Compiler.aspx

它使用 Google 的闭包编译器,非常棒。

谢谢

圭多

【讨论】:

【参考方案8】:

这是我的方式: 使用 MVC。 通过 MVC 控制器的操作处理 js|css 内容。 将多个文件合并为一个。 在将脚本存储在缓存中之前,即时缩小和混淆脚本|css。 缓存结果。 使用缓存依赖。 为动态内容启用 gzip。 在缓存功能之前启用 gzip。

一切都可以通过在操作方法上添加自定义属性来完成,使用ASP.NET MVC Js/Css Composer/Compressor。

示例:

public class JsController : Controller

    [Utility.Processors.JsCompress]
    [OutputCache(Duration = 3600)]
    public ActionResult Jquery()
    
        return View();
    

您可以从 CustomTextPostProcessingAttribute 派生并根据需要对任何类型的文本内容进行自己的后处理。

【讨论】:

【参考方案9】:

我今天刚学到一些东西:你可以运行JavaScript via windows console。我是 cssmin.js 的粉丝;所以,这个加上windows控制台=赢!您所要做的就是下载 cssmin.js,将其放在您的 Web 项目的文件夹中,然后在 Visual Studio 中添加以下构建后事件:

type "$(ProjectDir)css\*.css" | cscript //NoLogo "$(SolutionDir)tools\cssmin.js" > "$(ProjectDir)css\core.min.css"

这样做使您不必编辑您的项目as ajaxmin would have you to do。

【讨论】:

以上是关于ASP.NET - 脚本和 css 压缩的主要内容,如果未能解决你的问题,请参考以下文章

是否可以在 ASP.NET MVC 的脚本块中引用 ViewData?

[转载]在ASP.NET MVC中,使用Bundle来打包压缩js和css

ASP.NET Core MVC压缩样式脚本及总是复制文件到输出目录

ASP.NET下使用Combres对JSCSS压缩合并和优化

在ASP.NET MVC中,使用Bundle来打包压缩js和css

asp.net webform 中使用Microsoft ASP.NET Web Optimization压缩js及css