压缩 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