۱۳۸۸/۰۲/۲۱

كاهش پهناي باند مصرفي يك سايت ASP.Net


مطلبي را ديروز در وبلاگ آقاي صحرايي ديدم در مورد بهبود كارآيي برنامه‌ها و سايت‌هاي ASP.Net ، كه يكي از موارد آن "فاصله بین تگ ها را تا حد ممکن از بین ببرید" بود.
براي پياده سازي آن به صورت زير مي‌توان عمل كرد:
using System.Text.RegularExpressions;

//حذف فاصله‌هاي خالي
private static readonly Regex REGEX_BETWEEN_TAGS = new Regex(@">\s+<", RegexOptions.Compiled);
private static readonly Regex REGEX_LINE_BREAKS = new Regex(@"\n\s+", RegexOptions.Compiled);

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_BETWEEN_TAGS.Replace(html, "> <");
html = REGEX_LINE_BREAKS.Replace(html, string.Empty);

writer.Write(html.Trim());
}
}
اين قطعه كد را در مسترپيج سايت خود قرار دهيد تا به صورت يكسان به كل سايت اعمال شود.

يا روش ديگر اعمال آن سفارشي ساختن ASP.NET pipeline با كمك Response.Filter آن است. براي مشاهده پياده سازي آن لطفا به مقاله زير مراجعه بفرمائيد:

براي بهينه سازي قسمت اعمال regular expressions آن مي‌توان به مقاله "چگونه Regex سريعتري داشته باشيم؟" مراجعه كرد.