复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Web; using ADODB; using System.IO.Compression; using System.IO; namespace QuickEAS.WinUI.WebControl { public class LibHTTPCompressionModule : IHttpModule { void IHttpModule.Dispose() { } void IHttpModule.Init(HttpApplication context) { context.PreRequestHandlerExecute += new EventHandler(context_PostReleaseRequestState); } void context_PostReleaseRequestState(object sender, EventArgs e) { HttpApplication app = (HttpApplication)sender; //这里做一个过滤,后台不需要压缩,具体可以自己写一些判断, //我这里只是当访问路径有 /area开头时不允许压缩,因为后台有时候是动态输出,用了压缩就没有意义了 if (app.Request.Path.StartsWith("/area/", StringComparison.OrdinalIgnoreCase)) return; //当前为aspx页面,并且不是WEBFORM回调时,就开启压缩 //if (app.Context.CurrentHandler is System.Web.UI.Page && app.Request["HTTP_X_MICROSOFTAJAX"] == null) if (app.Request["HTTP_X_MICROSOFTAJAX"] == null) { if (IsEncodingAccepted(GZIP)) {//优先使用GZIP压缩 app.Response.Filter = new GZipStream(app.Response.Filter, CompressionMode.Compress); SetEncoding(GZIP); } else if (IsEncodingAccepted(DEFLATE)) {//Deflate也可以 app.Response.Filter = new DeflateStream(app.Response.Filter, CompressionMode.Compress); SetEncoding(DEFLATE); } } } private static readonly string GZIP = "gzip"; private static readonly string DEFLATE = "deflate"; //判断客户端是否支持指定的压缩 private static bool IsEncodingAccepted(string encoding) { HttpContext context = HttpContext.Current; return context.Request.Headers["Accept-Encoding"] != null && context.Request.Headers["Accept-encoding"].Contains(encoding); } //开启了压缩后,需要设置一下返回的编码类型,方便客户端解压缩 private static void SetEncoding(string encoding) { HttpContext.Current.Response.AppendHeader("Content-Encoding", encoding); } } }
最后
以上就是雪白蛋挞最近收集整理的关于【代码片段】HTTP压缩gzip、deflate的全部内容,更多相关【代码片段】HTTP压缩gzip、deflate内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复