天天看点

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

继续阅读