2010-06-17 74 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

相關問題