Asp.net mvc HTML最小化IActionFilter或IResultFilter
我正在尝试使用过滤器最小化HTML,该过滤器稍后将使用Orchard.OutputCache模块进行缓存Asp.net mvc HTML最小化IActionFilter或IResultFilter,asp.net-mvc,asp.net-mvc-5,orchardcms,Asp.net Mvc,Asp.net Mvc 5,Orchardcms,我正在尝试使用过滤器最小化HTML,该过滤器稍后将使用Orchard.OutputCache模块进行缓存 public void OnActionExecuted(ActionExecutedContext filterContext) { if (filterContext.HttpContext.Response.Filter != null && !Orchard.UI.Admin.AdminFilter.IsApplied(filterCo
public void OnActionExecuted(ActionExecutedContext filterContext)
{
if (filterContext.HttpContext.Response.Filter != null && !Orchard.UI.Admin.AdminFilter.IsApplied(filterContext.RequestContext))
{
filterContext.HttpContext.Response.Filter = new TidyHtml(filterContext.HttpContext.Response.Filter, filterContext.HttpContext.Response.Output.Encoding);
}
}
但我有几个项目可供选择
(IActionFilter)操作执行,操作执行
(IResultFilter)OnResultExecuting,OnResultExecuted
我用哪一个重要吗?这有什么区别吗?我不知道为什么,但当从缓存提供服务时,IActionFilter比IResultFilter快50%。如果没有缓存,它们在44ms时几乎相同 IActionFilter-localhost上缓存4ms的平均值
IResultFilter-本地主机上缓存8ms的平均值
因此,我将坚持使用ActionExecuted不要使用不起作用的工具。如果没有起作用的工具开始起作用:-p我想我错过了清除缓存之类的工具。我很惊讶这样做一开始有什么意义。我本以为gzip压缩会通过窃取CPU周期而不获得明显的大小优势,从而使这个计数器受益。在我的基准测试中,它甚至比尝试优化JS或CSS要好,后者在第一次请求时缓存在客户端上,而HTML是随每个请求一起发送的,并且包含大量空白和其他可以安全删除的冗余。即使使用Gzip HTML优化,根据您的视图编写得有多好,每个请求的页面大小也会减少5-15%。而且由于结果缓存在服务器上,缩小只需几毫秒,所以并没有性能损失,实际上更大的页面在客户端浏览器中呈现得更快,当然从长远来看可以节省带宽。