天天看點

ASP.NET MVC 3 網站優化總結(六)壓縮 HTML

壓縮 html 可以去除代碼中無用的空格等,這樣可提高網站的加載速度并節省帶寬。今天就讓我們看看在 ASP.NET MVC 3 怎麼實作 html 壓縮,我們可通過實作 ActionFilter 來完成 html 的壓縮。

其實我們在 ASP.NET MVC 3 網站優化總結(一) 使用 Gzip 壓縮這篇文章中使用的就是這種方法,主要看看實作的 FilterAttribute 類:

public class WhitespaceFilterAttribute : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        var request = filterContext.HttpContext.Request;
        var response = filterContext.HttpContext.Response;
        response.Filter = new WhiteSpaceFilter(response.Filter, s =>
        {
            s = Regex.Replace(s, @"\s+(?=<)|\s+$|(?<=>)\s+", "");

            //single-line doctype must be preserved
            var firstEndBracketPosition = s.IndexOf(">");
            if (firstEndBracketPosition >= 0)
            {
                s = s.Remove(firstEndBracketPosition, 1);
                s = s.Insert(firstEndBracketPosition, ">");
            }
            return s;
        });
    }
}      

使用時在 Action 方法上添加 Filter 屬性即可,如下:

[WhitespaceFilter]
public ActionResult Index(string id)
{
    return View();
}      

大家可以看看作者的文章 Minify HTML with .NET MVC ActionFilter,我主要修改了下作者使用的正則,因為原正則會将<pre></pre>中的空格也進行替換,并指定編碼為 UTF-8。

這樣就在 ASP.NET MVC 3 中實作了 html 的壓縮,大家可以下載下傳 WhiteSpaceFilter.rar 類來自己試試!

原文位址:http://www.lidongkui.com/asp-net-mvc-3-website-optimization-summary-minify-html

繼續閱讀