Subscribe Now

Trending News

Bài viết

ASP.NET, Lập trình

Nén đầu ra HTML website ASP.NET C#

Nén đầu ra HTML website ASP.NET C#

Code được viết trong Code Behind trong Master Page hoặc Web Form Page

Giải pháp đơn giản:

protected override void Render(HtmlTextWriter writer)
{
    if (this.Request.Headers["X-MicrosoftAjax"] != "Delta=true")
    {
        System.Text.RegularExpressions.Regex reg = new System.Text.RegularExpressions.Regex(@"]*>[\w|\t|\r|\W]*?");
        System.Text.StringBuilder sb = new System.Text.StringBuilder();
        System.IO.StringWriter sw = new System.IO.StringWriter(sb);
        HtmlTextWriter hw = new HtmlTextWriter(sw);
        base.Render(hw);
        string html = sb.ToString();
        System.Text.RegularExpressions.MatchCollection mymatch = reg.Matches(html);
        html = reg.Replace(html, string.Empty);
        reg = new System.Text.RegularExpressions.Regex(@"(?<=[^])\t{2,}|(?<=[>])\s{2,}(?=[<])|(?<=[>])\s{2,11}(?=[<])|(?=[\n])\s{2,}|(?=[\r])\s{2,}");
        html = reg.Replace(html, string.Empty);
        reg = new System.Text.RegularExpressions.Regex(@"");
        string str = string.Empty;
        foreach (System.Text.RegularExpressions.Match match in mymatch)
        {
            str += match.ToString();
        }
        html = reg.Replace(html, str + "");
        writer.Write(html);
    }
    else
    {
        base.Render(writer);
    }
}

Giải pháp chi tiết:

Nén HTML:

  • Loại bỏ các khoảng trắng không cần thiết, đặc biệt là ở giữa các thẻ HTML.
  • Loại bỏ các comment không cần thiết.
  • Nếu có thể, thay thế các thuộc tính có giá trị boolean bằng cách loại bỏ giá trị (ví dụ: disabled="disabled" có thể được rút gọn thành chỉ disabled).
protected override void Render(HtmlTextWriter writer)
{
    if (this.Request.Headers["X-MicrosoftAjax"] != "Delta=true")
    {
        System.IO.StringWriter sw = new System.IO.StringWriter();
        HtmlTextWriter hw = new HtmlTextWriter(sw);
        base.Render(hw);

        string html = sw.ToString();

        // Nén HTML
        html = CompressHtml(html);

        writer.Write(html);
    }
    else
    {
        base.Render(writer);
    }
}

private string CompressHtml(string html)
{
    // Loại bỏ khoảng trắng không cần thiết
    html = System.Text.RegularExpressions.Regex.Replace(html, @">\s+<", "><");
    
    // Loại bỏ comment
    html = System.Text.RegularExpressions.Regex.Replace(html, "", string.Empty);
    
    // Thay thế các thuộc tính boolean
    html = System.Text.RegularExpressions.Regex.Replace(html, @"(\w+)=""\1""", "$1");

    return html;
}

Nén JavaScript:

  • Loại bỏ các khoảng trắng không cần thiết và xuống dòng.
  • Loại bỏ các comment trong mã JavaScript.
private string CompressJavaScript(string js)
{
    // Loại bỏ khoảng trắng và xuống dòng không cần thiết
    js = System.Text.RegularExpressions.Regex.Replace(js, @"\s+", " ");
    // Loại bỏ comment trong mã JavaScript
    js = System.Text.RegularExpressions.Regex.Replace(js, @"/\*.*?\*/", string.Empty);

    return js;
}

Trong một số trường hợp, việc này có thể không nén mã JavaScript hiệu quả như việc sử dụng các thư viện chuyên nghiệp. Nếu mã của bạn phức tạp, có nhiều tính năng, và được tổ chức một cách phức tạp, việc sử dụng một thư viện nén sẽ giúp bạn tiết kiệm thời gian và giảm khả năng gặp lỗi.

Bài viết liên quan

Theo dõi
Thông báo của
guest

0 Góp ý
Mới nhất
Cũ nhất Được bỏ phiếu nhiều nhất
Phản hồi nội tuyến
Xem tất cả bình luận