asp.net – 压缩不起作用
发布时间:2020-12-16 06:31:22 所属栏目:asp.Net 来源:网络整理
导读:我需要压缩数据导出网站的所有动态内容. 我尝试了很多方法,没有任何作用. Chrome显示内容未压缩,并且“Content-Encoding”标头不存在. 尝试这样做作为最后的手段(在编写任何响应之前): context.Response.Filter = new DeflateStream(context.Response.Filte
我需要压缩数据导出网站的所有动态内容.
我尝试了很多方法,没有任何作用. Chrome显示内容未压缩,并且“Content-Encoding”标头不存在. 尝试这样做作为最后的手段(在编写任何响应之前): context.Response.Filter = new DeflateStream(context.Response.Filter,CompressionMode.Compress); context.Response.AppendHeader("Content-Encoding","deflate"); 记录显示此代码正确执行. UPD在使用IIS内置压缩时,似乎工作和请求跟踪显示“DYNAMIC_COMPRESSION_SUCCESS”.但是,IE仍显示响应未压缩.当我使用localhost名称从服务器本身请求页面时也是如此. 有任何想法吗? 解决方法
如果要手动执行此操作,请首先检查是否支持压缩,
public static bool IsGZipSupported() { string AcceptEncoding = HttpContext.Current.Request.Headers["Accept-Encoding"]; if (!string.IsNullOrEmpty(AcceptEncoding) && (AcceptEncoding.Contains("gzip") || AcceptEncoding.Contains("deflate"))) return true; return false; } 压缩你的回复, public static void GZipEncodePage() { if (IsGZipSupported()) { HttpResponse Response = HttpContext.Current.Response; string AcceptEncoding = HttpContext.Current.Request.Headers("Accept-Encoding"); if (AcceptEncoding.Contains("gzip")) { Response.Filter = new System.IO.Compression.GZipStream(Response.Filter,System.IO.Compression.CompressionMode.Compress); Response.AppendHeader("Content-Encoding","gzip"); } else { Response.Filter = new System.IO.Compression.DeflateStream(Response.Filter,System.IO.Compression.CompressionMode.Compress); Response.AppendHeader("Content-Encoding","deflate"); } 您可以在将标头发送到客户端之前检查过滤器是否已附加 protected void Application_PreSendRequestHeaders() { HttpResponse response = HttpContext.Current.Response; if (response.Filter is GZipStream && response.Headers["Content-encoding"] != "gzip") response.AppendHeader("Content-encoding","gzip"); else if (response.Filter is DeflateStream && response.Headers["Content-encoding"] != "deflate") response.AppendHeader("Content-encoding","deflate"); } 有关更多信息,请查看此帖 > ASP.NET GZip Encoding Caveats (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 如何使用ASP.NET和iframe对跨域的用户进行身份验证?
- asp.net – ‘ToArray’不是’String’的成员
- asp.net – 将任何UI连接到我的应用程序
- asp.net – 多个RegisterClientScriptBlock
- asp.net – Mocking HttpContext不起作用
- 我们可以在ASP.Net WEB API中使用存储库模式和工作单元吗?
- asp.net – HttpContext.Error vs HttpContext.Server.GetL
- asp.net-mvc – 查找单元测试方向,显示部分视图的控制器扩展
- 在ASP.Net日历控件中默认选择当前日期
- asp.net – 如何在$.ajax POST(JQuery)中处理单引号?
推荐文章
站长推荐
- asp.net – 如何将查询字符串添加到facebook登录
- asp.net-mvc-3 – 如何判断我的动作是否被Render
- asp.net – EmptyDataTemplate和EmptyDataText在
- asp.net webapi UseOAuthBearerAuthentication v
- ASP.NET CompareValidator问题
- asp.net-mvc – ASP.NET中的Dapper,ODATA和IQuer
- asp.net-mvc – 有没有办法从控制器A调用控制器B
- asp.net – 如何从水晶报表中的组字段中删除组名
- asp.net – 如何拦截WCF .svc服务中对方法的所有
- asp.net-mvc – 如何在启动应用程序之前在system
热点阅读