c# – MVC 4 – GZIP压缩JSON ajax动作结果
发布时间:2020-12-15 06:35:45 所属栏目:百科 来源:网络整理
导读:问题 我在IIS 7.5上运行的MVC 4应用程序上有一个Telerik MVC UI网格,可以通过AJAX潜在地返回大量的JSON数据,在极端情况下为800kb或更多.由于有效载荷可能很大,我想要GZIP它.对于我的生活,我不能让它工作. 控制器的动作是: public ActionResult _CustomBindi
问题
我在IIS 7.5上运行的MVC 4应用程序上有一个Telerik MVC UI网格,可以通过AJAX潜在地返回大量的JSON数据,在极端情况下为800kb或更多.由于有效载荷可能很大,我想要GZIP它.对于我的生活,我不能让它工作. 控制器的动作是: public ActionResult _CustomBinding([DataSourceRequest] DataSourceRequest request,SearchMemberModel search) { //Do some stuff return Json(result); } Fiddler报告: 已经尝试了 我已经确保在IIS中启用动态和静态压缩: App Web.Config修改: <system.webServer> <serverRuntime frequentHitThreshold="1" frequentHitTimePeriod="10:00:00" /> <validation validateIntegratedModeConfiguration="false" /> <modules runAllManagedModulesForAllRequests="false"> <remove name="FormsAuthentication" /> </modules> <httpCompression directory="%SystemDrive%inetpubtempIIS Temporary Compressed Files"> <scheme name="gzip" dll="%Windir%system32inetsrvgzip.dll" staticCompressionLevel="9" /> <dynamicTypes> <add mimeType="text/*" enabled="true" /> <add mimeType="message/*" enabled="true" /> <add mimeType="application/x-javascript" enabled="true" /> <add mimeType="application/json" enabled="true" /> <add mimeType="*/*" enabled="false" /> </dynamicTypes> <staticTypes> <add mimeType="text/*" enabled="true" /> <add mimeType="message/*" enabled="true" /> <add mimeType="application/x-javascript" enabled="true" /> <add mimeType="application/atom+xml" enabled="true" /> <add mimeType="application/xaml+xml" enabled="true" /> <add mimeType="*/*" enabled="false" /> </staticTypes> </httpCompression> <urlCompression doStaticCompression="true" doDynamicCompression="true" /> </system.webServer> 我确定了ApplicationHost file has the right mime types: <add mimeType="application/json" enabled="true" /> <add mimeType="application/json; charset=utf-8" enabled="true" /> <add mimeType="application/json;charset=utf-8" enabled="true" /> 我已经尝试了serverRuntime频繁HitThreshold需要修改的suggestion here. 有没有我失踪的东西? 解决方法
好吧,我似乎也需要在我的控制器里做一些事情:
根据以下提取自:how to gzip content in asp.net MVC? public class CompressAttribute : ActionFilterAttribute { public override void OnActionExecuting(ActionExecutingContext filterContext) { var encodingsAccepted = filterContext.HttpContext.Request.Headers["Accept-Encoding"]; if (string.IsNullOrEmpty(encodingsAccepted)) return; encodingsAccepted = encodingsAccepted.ToLowerInvariant(); var response = filterContext.HttpContext.Response; if (encodingsAccepted.Contains("deflate")) { response.AppendHeader("Content-encoding","deflate"); response.Filter = new DeflateStream(response.Filter,CompressionMode.Compress); } else if (encodingsAccepted.Contains("gzip")) { response.AppendHeader("Content-encoding","gzip"); response.Filter = new GZipStream(response.Filter,CompressionMode.Compress); } } 控制器中的使用: [Compress] public class BookingController : BaseController {...} (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |