Asp.net mvc HTML最小化IActionFilter或IResultFilter

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

我正在尝试使用过滤器最小化HTML,该过滤器稍后将使用Orchard.OutputCache模块进行缓存

    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)OnResultExecutingOnResultExecuted


我用哪一个重要吗?这有什么区别吗?

我不知道为什么,但当从缓存提供服务时,IActionFilter比IResultFilter快50%。如果没有缓存,它们在44ms时几乎相同

IActionFilter-localhost上缓存4ms的平均值
IResultFilter-本地主机上缓存8ms的平均值


因此,我将坚持使用ActionExecuted

不要使用不起作用的工具。如果没有起作用的工具开始起作用:-p我想我错过了清除缓存之类的工具。我很惊讶这样做一开始有什么意义。我本以为gzip压缩会通过窃取CPU周期而不获得明显的大小优势,从而使这个计数器受益。在我的基准测试中,它甚至比尝试优化JS或CSS要好,后者在第一次请求时缓存在客户端上,而HTML是随每个请求一起发送的,并且包含大量空白和其他可以安全删除的冗余。即使使用Gzip HTML优化,根据您的视图编写得有多好,每个请求的页面大小也会减少5-15%。而且由于结果缓存在服务器上,缩小只需几毫秒,所以并没有性能损失,实际上更大的页面在客户端浏览器中呈现得更快,当然从长远来看可以节省带宽。