我是靠谱客的博主 雪白蛋挞,最近开发中收集的这篇文章主要介绍【代码片段】HTTP压缩gzip、deflate,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

using 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所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部