有哪些方法可以减少由asp.net应用程序发送的HTML响应的大小?我使用的控件不属于我,它产生的输出与白色空间。我有兴趣缩小整个HTML输出的页面就像谷歌(查看源www.google.com),以改善时间。是否有任何实用程序类可用于ASP.NET,可以为我做这件事?
kr98yfug1#
不需要在运行时执行,因为它可以在编译时执行。详细信息:http://omari-o.blogspot.com/2009/09/aspnet-white-space-cleaning-with-no.html
r6vfmomb2#
尝试HTTP模块,如下所述:http://madskristensen.net/post/a-whitespace-removal-http-module-for-aspnet-20
polkgigr3#
对于Microsoft .NET平台,有一个名为WebMarkupMin的库,它可以生成HTML代码的缩小版。对于每个ASP.NET框架,都有自己的模块:
文档可从-http://webmarkupmin.codeplex.com/documentation获得
x4shl7ld4#
我想评论一下Thorn的建议(但我对堆栈溢出是个新手)。1.链接的代码(omari-o.blogspot.com)不支持MVC 4,尽管代码是开源的,但由于MVC 3和MVC 4之间的制动变化,它不能轻易升级。1.在运行时,可能会有空白写入http结果,只有实际网站的开发人员才能知道。因此,模板文件的静态缩小(aspx)根本不是万无一失的。动态缩小,这是由gius建议的,应该用来保证空白被正确删除,不幸的是,这将导致运行时计算成本。如果代码动态将空格写入输出,它将不得不被删除动态。
kuarbcqp5#
公认的答案不适用于MVC 4,所以这里有一个类似的库,它在构建时缩小了https://github.com/jitbit/HtmlOptimizerMvc4
62o28rlo6#
只是添加另一个选项,我没有看到这里列出,这是一个我建议使用:Html minifier command line tool用法:here和here然而,这个工具有一个问题:它留下单行(//)注解,并且它会导致Razor解析的问题,因为单行注解放置在C#块中,如下所示:
@{ ... ... // anything ... }
字符串将导致Razor解析器从这一点开始忽略行的其余部分的缩小输出,从而引发一个错误,指出它无法找到块的结尾“}”。我解决这个问题的方法是从输出中完全删除这些注解。这样就可以了。要做到这一点,只需从第145行删除RegexOptions.SingleLine:
htmlContents = Regex.Replace(htmlContents, @"//(.*?)\r?\n", ""/*, RegexOptions.Singleline*/);
型
vmjh9lq97#
在母版页或Web表单页的后面,Page_Load事件之前使用此函数:
protected override void Render(HtmlTextWriter writer) { if (this.Request.Headers["X-MicrosoftAjax"] != "Delta=true") { System.Text.RegularExpressions.Regex reg = new System.Text.RegularExpressions.Regex(@"<script[^>]*>[\w|\t|\r|\W]*?</script>"); System.Text.StringBuilder sb = new System.Text.StringBuilder(); System.IO.StringWriter sw = new System.IO.StringWriter(sb); HtmlTextWriter hw = new HtmlTextWriter(sw); base.Render(hw); string html = sb.ToString(); System.Text.RegularExpressions.MatchCollection mymatch = reg.Matches(html); html = reg.Replace(html, string.Empty); reg = new System.Text.RegularExpressions.Regex(@"(?<=[^])\t{2,}|(?<=[>])\s{2,}(?=[<])|(?<=[>])\s{2,11}(?=[<])|(?=[\n])\s{2,}|(?=[\r])\s{2,}"); html = reg.Replace(html, string.Empty); reg = new System.Text.RegularExpressions.Regex(@"</body>"); string str = string.Empty; foreach (System.Text.RegularExpressions.Match match in mymatch) { str += match.ToString(); } html = reg.Replace(html, str + "</body>"); writer.Write(html); } else { base.Render(writer); } }
字符串
7条答案
按热度按时间kr98yfug1#
不需要在运行时执行,因为它可以在编译时执行。
详细信息:http://omari-o.blogspot.com/2009/09/aspnet-white-space-cleaning-with-no.html
r6vfmomb2#
尝试HTTP模块,如下所述:http://madskristensen.net/post/a-whitespace-removal-http-module-for-aspnet-20
polkgigr3#
对于Microsoft .NET平台,有一个名为WebMarkupMin的库,它可以生成HTML代码的缩小版。对于每个ASP.NET框架,都有自己的模块:
文档可从-http://webmarkupmin.codeplex.com/documentation获得
x4shl7ld4#
我想评论一下Thorn的建议(但我对堆栈溢出是个新手)。
1.链接的代码(omari-o.blogspot.com)不支持MVC 4,尽管代码是开源的,但由于MVC 3和MVC 4之间的制动变化,它不能轻易升级。
1.在运行时,可能会有空白写入http结果,只有实际网站的开发人员才能知道。因此,模板文件的静态缩小(aspx)根本不是万无一失的。动态缩小,这是由gius建议的,应该用来保证空白被正确删除,不幸的是,这将导致运行时计算成本。如果代码动态将空格写入输出,它将不得不被删除动态。
kuarbcqp5#
公认的答案不适用于MVC 4,所以这里有一个类似的库,它在构建时缩小了https://github.com/jitbit/HtmlOptimizerMvc4
62o28rlo6#
只是添加另一个选项,我没有看到这里列出,这是一个我建议使用:
Html minifier command line tool
用法:here和here
然而,这个工具有一个问题:它留下单行(//)注解,并且它会导致Razor解析的问题,因为单行注解放置在C#块中,如下所示:
字符串
将导致Razor解析器从这一点开始忽略行的其余部分的缩小输出,从而引发一个错误,指出它无法找到块的结尾“}”。
我解决这个问题的方法是从输出中完全删除这些注解。这样就可以了。要做到这一点,只需从第145行删除RegexOptions.SingleLine:
型
vmjh9lq97#
在母版页或Web表单页的后面,Page_Load事件之前使用此函数:
字符串