重寫 `Page.Render` 方法,攔截輸出流,用正則表達式移除多餘空白(換行、製表、多重空格),減小 HTML 體積,提升傳輸速度。開發時源碼保持可讀,運行時自動壓縮。
using System;
using System.Web.UI;
using System.IO;
using System.Text.RegularExpressions;
public class PageBase : Page
{
protected override void Render(HtmlTextWriter writer)
{
using (StringWriter sw = new StringWriter())
using (HtmlTextWriter htmlWriter = new HtmlTextWriter(sw))
{
base.Render(htmlWriter); // 先讓頁面正常渲染到內存
string html = sw.ToString();
// 移除 \f \v (頁面換頁、垂直製表) 等控制字符
html = Regex.Replace(html, @"[\f\v]", "");
// 多個空格合併為單個
html = Regex.Replace(html, @" {2,}", " ");
// 標籤結尾 '>' 後的單個空格移除
html = Regex.Replace(html, @">\s+<", "><");
// 也可選擇移除註釋:html = Regex.Replace(html, @"", "", RegexOptions.Singleline);
writer.Write(html);
}
}
}
所有頁面繼承 `PageBase` 而非 `System.Web.UI.Page`:
public partial class MyPage : PageBase { ... }
`、`