壓縮 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