ActionFilterAttribute之CompressFilter,GZIP,DEFLATE压缩

本文介绍如何通过设置Filter标签来启用Gzip和Deflate压缩技术,从而减少网站页面大小及带宽消耗。文中详细解释了根据客户端请求头中的接受编码类型来选择合适的压缩方式,并展示了具体的代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

开启Gzip,Deflate压缩也会给减小网站页面大小,进而减小使用带宽,只需设置此Filter标签,便可实现.其中当页面出现错误时,会禁止压缩,以防用户看不到调式错误.

public class CompressFilter : ActionFilterAttribute { #region = IsAvailable = private bool _isavailable = true; public bool IsAvailable { get { return _isavailable; } set { _isavailable = value; } } #endregion public CompressFilter() { } public CompressFilter(bool isAvailable) { _isavailable = isAvailable; } public override void OnActionExecuting(ActionExecutingContext filterContext) { if (!IsAvailable) { base.OnActionExecuting(filterContext); return; } if (filterContext.HttpContext.IsCustomErrorEnabled) { HttpRequestBase request = filterContext.HttpContext.Request; string acceptEncoding = request.Headers["Accept-Encoding"]; if (string.IsNullOrEmpty(acceptEncoding)) return; acceptEncoding = acceptEncoding.ToUpperInvariant(); HttpResponseBase response = filterContext.HttpContext.Response; if (acceptEncoding.Contains("GZIP")) { response.AppendHeader("Content-encoding", "gzip"); response.Filter = new GZipStream(response.Filter, CompressionMode.Compress); } else if (acceptEncoding.Contains("DEFLATE")) { response.AppendHeader("Content-encoding", "deflate"); response.Filter = new DeflateStream(response.Filter, CompressionMode.Compress); } } } }

配合HtmlFilter 使用,其乐无穷~!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值