Minify ASP.NET应用程序的Html输出
我们可以通过哪种方式来减lessasp.net应用程序发送的HTML响应的大小?
我正在使用不属于我的控件,它使用空格产生输出。 我感兴趣的是如何谷歌如何(查看源代码www.google.com)来缩短整个页面的HTML输出,以提高时间。
有没有可用于ASP.NET的实用工具类,可以为我做这个东西?
在运行时没有必要这样做。 因为它可以在编译时完成。
详情: http : //omari-o.blogspot.com/2009/09/aspnet-white-space-cleaning-with-no.html
尝试HTTP模块,如下所述: http : //madskristensen.net/post/a-whitespace-removal-http-module-for-aspnet-20
对于Microsoft .NET平台,有一个名为WebMarkupMin的库,用于生成HTML代码的缩小。 对于每个ASP.NET框架都有自己的模块:
- ASP.NET核心 – WebMarkupMin.Web 。 作为一个HTTP模块实现,所以它可以与任何框架一起工作。 适用于ASP.NET Web Pages框架(Razor)。
- ASP.NET MVC – WebMarkupMin.Mvc
- ASP.NET Web窗体 – WebMarkupMin.WebForms
我想评论桑恩的build议(但我是堆栈溢出的新手)。
-
链接的代码(omari-o.blogspot.com)不支持MVC4,尽pipe代码是开源的,但由于MVC3和MVC4之间的制动变化,不能轻易升级。
-
在运行时可能会有空格写入http结果,只有实际网站的开发人员可以知道。 因此,模板文件(aspx)的静态缩小根本不是万无一失的。 dynamic缩小,这是由giusbuild议,应该用来保证空格被正确地删除,不幸的是这将产生一个运行时间的计算成本。 如果代码dynamic地将空间写入输出,它将不得不被dynamic移除。
接受的答案不适用于MVC 4,所以这里是一个类似的库,在构build时间缩小https://github.com/jitbit/HtmlOptimizerMvc4
只是添加另一个选项,我没有看到这里列出,这是我被推荐使用的一个:
Html minifier命令行工具
用法: 这里和这里
然而,这个工具存在一个问题 :它留下了单行(/)注释,并且由于在C#块中放置了单行注释,所以会导致Razorparsing出现问题,如下所示:
@{ ... ... // anything ... }
会导致直线的缩小输出,从这一点开始,Razorparsing器将会忽略这一点,从而产生一个错误,说明找不到块的closures“}”。
我的这个问题的解决方法是从输出中完全删除这些评论。 这样它的工作。 要做到这一点,只需从行145删除RegexOptions.SingleLine:
htmlContents = Regex.Replace(htmlContents, @"//(.*?)\r?\n", ""/*, RegexOptions.Singleline*/);