asp.net
剛才“不小心”檢查了一下ASP.NET產生的程式碼,驚訝地發現ASP.NET輸出的代碼居然如此地不緊湊,在標籤之間有無數的空格和定位字元(TAB),特別是用了巢狀表格格之後,那景象真是慘不忍睹啊,有圖為證:
照理說在ASP.NET產生的程式碼中添加這麼多無用的空格/tab可能是為了使產生的HTML代碼更具可讀性,但是由此帶來的問題就是使輸出的代碼變大了,在頻寬有限的今天簡直就是一種犯罪,浪費使用者的錢財,影響使用者的體驗嘛!而且ASP.NET屬於伺服器端編程,不可能會直接編輯最終產生的HTML代碼,就算把所有的空格/Tab都去了,也不會帶來任何不好的影響的吧!?
基於以上考慮,祭出Reflector,果然發現HtmlTextWriter中有Indent屬性控制著縮排大小,而且幸運的是該屬性還是public類型的,真是天助我也,花了幾分鐘時間,搗鼓出如下代碼:
1 public class FilterHtmlTextWriter : HtmlTextWriter
2 {
3 public FilterHtmlTextWriter(TextWriter writer, string tabString)
4 : base(writer, tabString)
5 {
6 }
7
8 public new int Indent
9 {
10 get { return 0; } // 始終返回0
11 set { base.Indent = 0; } // 始終置0
12 }
13 }
然後重載頁面的Render方法(如果所有頁面有公用的基類的話就更好了),加入一行代碼,如下:
1 public partial class _Default : System.Web.UI.Page
2 {
3 protected override void Render(HtmlTextWriter writer)
4 {
5 // 替換writer為我們自訂的類
6 writer = new FilterHtmlTextWriter(writer.InnerWriter, "");
7 base.Render(writer);
8 }
9 //
10 }
至此大功告成,讓我們重新看看頁面的輸出,哇塞,討厭的空格果然變少了@_@,如下圖所示: