【发布时间】:2017-02-06 23:21:48
【问题描述】:
我看到了几篇关于这个主题的文章,但其中大部分都已经过时了。那么在输出我的视图 html 时缩小/消除空格的最佳方法是什么?
【问题讨论】:
-
@sarepta 会缩小 Razor 代码吗?
标签: html asp.net-mvc asp.net-mvc-5 minify
我看到了几篇关于这个主题的文章,但其中大部分都已经过时了。那么在输出我的视图 html 时缩小/消除空格的最佳方法是什么?
【问题讨论】:
标签: html asp.net-mvc asp.net-mvc-5 minify
使用 WebMarkupMin:ASP.NET 4.X MVC。安装 NuGet 包,然后在您的操作方法、控制器上使用 MinifyHtmlAttribute,或在 FilterConfig 中的 RegisterGlobalFilters 中注册它。你也可以试试CompressContentAttribute。这是维基:https://github.com/Taritsyn/WebMarkupMin/wiki/WebMarkupMin:-ASP.NET-4.X-MVC
如果您使用 CompressContentAttribute,如果您在应用此属性之前使用 gzip,您将看到 Content-Encoding:deflate 标头而不是 Content-Encoding:gzip 标头。
一些测试数字:
没有缩小或压缩:
Content-Length:21594
仅缩小:Content-Length:19869
缩小和压缩:Content-Length:15539
您必须进行测试,看看您的更改是否总体上提高了速度。
编辑:
在本地和实时站点上进行详尽的测试后,我得出结论,在我的案例中,使用 WebMarkupMin 缩小和压缩 HTML 会使页面加载时间减慢约 10%。只是压缩(使用CompressContentAttribute)或只是缩小也会减慢它的速度。所以我决定不压缩(使用CompressContentAttribute)或压缩我的HTML。
【讨论】:
我构建了一个非常简单的 minifier,名为 RazorHtmlMinifier.Mvc5。
当 cshtml Razor 文件转换为 C# 类时,它在编译时运行,因此在运行时不会有任何性能开销。
缩小非常简单,基本上只是用一个替换多个空格(因为有时一个空格仍然很重要,例如<span>Hello</span> <span>World</span> 与<span>Hello</span><span>World</span> 不同)。
源代码是最新的并且非常简单(只是one file with less than 100 lines of code),安装只涉及一个 NuGet 包和更改 Web.config 文件中的一行。
所有这些都是为最新版本的 ASP.NET MVC 5 构建的。
通常,建议使用 gzip 编码来缩小 HTTP 响应,但我发现如果你在 gzip 之前缩小 HTML,你仍然可以获得平均 11% 的缩小响应。在我看来,还是值得的。
【讨论】: