有没有更好的方法来压缩从aspx页面生成的HTML?

4
我正在使用以下代码来在运行时压缩生成的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压缩。虽然可以节省带宽,但生成的HTML是难以阅读的。在采取这一步骤之前,请确保你已经优化了其他所有内容 :-) - Claudio Redi
3
IIS 7(服务器2008)还具有响应压缩(gzip)的设置。 默认情况下,所有静态内容都使用压缩,但不适用于动态内容。 打开动态内容的压缩会消耗更多的CPU,但它可以很好地压缩ASPX的输出。 - tgolisch
1
@Claudio Redi,我需要阅读生成的HTML吗?FireBug可以美化难以阅读的HTML。由于.aspx页面使输出HTML最小化,因此我的原始.aspx页面保持不变。 - Nazmul
2个回答

3

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的方法都会在像这样需要空格的情况下删除它们:<a href="#">Links here</a> > <a href="#">Links2</a> 的结果将是(视觉上):Links here > Links2 而不是 Links here > Links2 - Rafael Herscovici

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接