2010-06-17 43 views
3

我正在使用下面的代码来缩小从aspx页面duuring运行时生成的html。有没有更好的方法来缩小从aspx页面生成的html

protected override void Render(HtmlTextWriter writer) 
{ 
    TextWriter output = new StringWriter(); 
    base.Render(new HtmlTextWriter(output)); 
    String html = output.ToString(); 
    html = Regex.Replace(html, @"\n|\t", " "); 
    html = Regex.Replace(html, @">\s+<", "><").Trim(); 
    html = Regex.Replace(html, @"\s{2,}", " "); 

    writer.Write(html); 
} 

有没有更好的方法来做同样的事情。

非常感谢。

+1

除非你有一个非常字符串的原因,我不会推荐HTML minify。你节省了带宽,但生成的HTML是不可读的。请确保在采取此步骤之前优化了其他所有内容:-) – 2010-06-17 15:12:58

+3

IIS 7(服务器2008)也有一个设置来执行响应压缩(gzip)。默认情况下,对所有静态内容使用压缩,但不对动态内容使用压缩。打开动态内容会消耗更多的CPU,但它很好地压缩了ASPX的输出。 – tgolisch 2010-06-17 15:14:47

+0

“tgolisch”IIS 6呢? – Hoque 2010-06-17 15:33:28

回答

1
protected override void Render(HtmlTextWriter writer) 
{ 
    using (HtmlTextWriter htmlwriter = new HtmlTextWriter(new System.IO.StringWriter())) 
    { 
     base.Render(htmlwriter); 
     string html = htmlwriter.InnerWriter.ToString(); 
     html = Regex.Replace(html, @"(?<=[^])\t{2,}|(?<=[>])\s{2,}(?=[<])|(?<=[>])\s{2,11}(?=[<])|(?=[\n])\s{2,}", ""); 
     html = Regex.Replace(html, @"[ \f\r\t\v]?([\n\xFE\xFF/{}[\];,<>*%&|^!~?:=])[\f\r\t\v]?", "$1"); 
     html = html.Replace(";\n", ";"); 
     writer.Write(html); 
    } 
} 
+1

你为什么认为这样比较好?顺便说一句,你的方法和OP方法都会在如下情况下删除需要的空间:'Links here>Links2'结果将(可视化):'Links here> Links2'而不是'Links here> Links2' – Dementic 2012-04-10 11:42:42

相关问题