缩小 ASP.NET 应用程序的 Html 输出
Posted
技术标签:
【中文标题】缩小 ASP.NET 应用程序的 Html 输出【英文标题】:Minify Html output of ASP.NET Application 【发布时间】:2010-09-20 06:42:29 【问题描述】:我们可以通过哪些方法来减小 asp.net 应用程序发送的 html 响应的大小?
我正在使用不属于我的控件,它会产生带有空格的输出。我对缩小页面的整个 HTML 输出很感兴趣,就像 google 所做的一样(查看源代码 www.google.com)以改进时间。
是否有任何适用于 ASP.NET 的实用程序类可以为我做这些事情?
【问题讨论】:
【参考方案1】:无需在运行时执行此操作。因为它可以在编译时完成。
详情:http://omari-o.blogspot.com/2009/09/aspnet-white-space-cleaning-with-no.html
【讨论】:
很好的链接。这是我对***.com/questions/7121371/… 的解决方案 你是如何在项目中应用这个的?对不起,我的无知,但我不能让它工作。 @ryan 你遇到了什么错误?你在 web.config 中指定 pageParserFilterType 了吗? 我明白了 :-) 我只需要添加<pages pageParserFilterType="Omari.Web.UI.WhiteSpaceCleaner, WhiteSpaceCleanerForWebFormsAndMVC3" controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID">
并设置 debug = false。
虽然链接的博客文章仍然存在,但博客文章中代码的链接现在已损坏。【参考方案2】:
尝试此处描述的 HTTP 模块:http://madskristensen.net/post/a-whitespace-removal-http-module-for-aspnet-20
【讨论】:
网址损坏,项目似乎不再有效。 注意:这仅在请求以 .aspx 结尾时有效,但您可以修改代码【参考方案3】:对于 Microsoft .NET 平台,有一个名为 WebMarkupMin 的库,它可以生成 HTML 代码的缩小版。对于每个 ASP.NET 框架都有自己的模块:
ASP.NET 核心 - WebMarkupMin.Web。实现为 HTTP 模块,因此它可以与任何框架一起使用。适合在 ASP.NET 网页框架 (Razor) 中使用。 ASP.NET MVC - WebMarkupMin.Mvc ASP.NET Web 窗体 - WebMarkupMin.WebForms文档位于 - http://webmarkupmin.codeplex.com/documentation
【讨论】:
WebMarkupMin 不能缩小 Razor 代码,但可以缩小输出的 HTML 代码。 那么你如何使用它呢?我看到您可以下载并安装 asp.net 网络表单,但在那之后呢? nuget.org/packages/WebMarkupMin.AspNet4.WebForms WebMarkupMin 已移至 GitHub。如果您使用过旧版本的 WebMarkupMin,那么我建议您先阅读文档的“How to upgrade applications to version 2.X” 部分。 @franko_camron 您需要阅读文档的“ASP.NET Extensions”、“ASP.NET 4.X Extensions” 和“WebMarkupMin: ASP.NET 4.X Web Forms” 部分。【参考方案4】:我想对 Thorn 的建议发表评论(但我是堆栈溢出的新手)。
链接代码 (omari-o.blogspot.com) 不支持 MVC4,虽然代码是开源的,但由于 MVC3 和 MVC4 之间的制动变化,无法轻松升级。
在运行时可能会有空格写入 http 结果,只有实际站点的开发人员才能知道。因此,模板文件 (aspx) 的静态缩小根本不是万无一失的。 gius 建议的动态缩小应该用于保证正确删除空格,不幸的是这会产生运行时计算成本。如果代码动态将空格写入输出,则必须动态将其删除。
【讨论】:
【参考方案5】:已接受的答案不适用于 MVC 4,因此这里有一个类似的库,可在构建时缩小 https://github.com/jitbit/HtmlOptimizerMvc4
【讨论】:
您对 VS 停止在您的视图中识别 @model 有任何问题吗? 你为什么发布一个没有任何修改的分叉版本?【参考方案6】:只是添加另一个我没有在此处列出的选项,这是我推荐使用的选项:
Html minifier command line tool
用法: here 和 here
但是,使用此工具有一个问题:它会留下单行 (//) cmets,并且会导致 Razor 解析出现问题,因为单行注释放置在 C# 块中,例如以下:
@
...
...
// anything
...
将导致从这一点开始,Razor 解析器忽略该行的缩小输出其余部分,从而引发错误,指出它无法找到该块的结束“”。
我针对此问题的解决方法是从输出中完全删除这些 cmets。 这样就可以了。 为此,只需从第 145 行删除 RegexOptions.SingleLine:
htmlContents = Regex.Replace(htmlContents, @"//(.*?)\r?\n", ""/*, RegexOptions.Singleline*/);
【讨论】:
这个问题应该在最新版本中修复 - github.com/deanhume/html-minifier以上是关于缩小 ASP.NET 应用程序的 Html 输出的主要内容,如果未能解决你的问题,请参考以下文章
具有捆绑和缩小功能的 ASP.NET MVC 4 应用程序,为啥在调试模式下启用缩小?
可以与 ASP.NET 应用程序的构建集成的 JavaScript 缩小器