简单实现asp.net页面压缩(gzip,deflate)

虽然现在带宽上去了,但能减少一些流量总还是好的,特别是手机上网用户。

博客圆里已经有很多现成的gzip页面压缩的模块,也很好用,功能也很强;不过,正因为强了,可能需要做一些配置操作。所以如果只需要简单的对asp.net页面进行压缩的处理,可以试试下面的代码:

 

ExpandedBlockStart.gif 代码
Public   Class  CompressModule
    
Implements  IHttpModule
    
Public   Sub  Dispose()  Implements  System.Web.IHttpModule.Dispose

    
End Sub

    
Public   Sub  Init( ByVal  context  As  System.Web.HttpApplication)  Implements  System.Web.IHttpModule.Init
        
AddHandler  context.PreRequestHandlerExecute,  AddressOf  CompressModule_PreRequestHandlerExecute
    
End Sub

    
Protected   Sub  CompressModule_PreRequestHandlerExecute( ByVal  sender  As   Object ByVal  e  As  EventArgs)
        
Dim  app  As  HttpApplication  =   CType (sender, HttpApplication)
        
' 检测是否为ASP.NET页面,是否MS-AJAX应用
         If   TypeOf  app.Context.CurrentHandler  Is  UI.Page  AndAlso  app.Request.ServerVariables( " HTTP_X_MICROSOFTAJAX " Is   Nothing   Then
            
Dim  type  As  CompressType  =   Me .GetCompressType(app)
            
If  type  =  CompressType.GZip  Then
                app.Response.Filter 
=   New  GZipStream(app.Response.Filter, CompressionMode.Compress)
                app.Response.AppendHeader(
" Content-Encoding " , type.ToString().ToLower())
            
ElseIf  type  =  CompressType.Deflate  Then
                app.Response.Filter 
=   New  DeflateStream(app.Response.Filter, CompressionMode.Compress)
                app.Response.AppendHeader(
" Content-Encoding " , type.ToString().ToLower())
            
End   If
        
End   If
    
End Sub

    
'''   <summary>
    
'''  获取客户端支持的压缩类型
    
'''   </summary>
    
'''   <param name="context"> The context. </param>
    
'''   <returns></returns>
     Protected   Function  GetCompressType( ByVal  context  As  HttpApplication)  As  CompressType
        
Dim  accept  As   String   =  context.Request.Headers( " Accept-Encoding " )
        
If   String .IsNullOrEmpty(accept)  Then
            
Return  CompressType.None
        
End   If
        accept 
=  accept.ToUpperInvariant()
        
If  accept.Contains( " GZIP " Then
            
Return  CompressType.GZip
        
End   If
        
If  accept.Contains( " DEFLATE " Then
            
Return  CompressType.Deflate
        
End   If
        
Return  CompressType.None
    
End Function


    
'''   <summary>
    
'''  压缩类型枚举
    
'''   </summary>
     Protected   Enum  CompressType
        
'''   <summary>
        
'''  GZIP压缩
        
'''   </summary>
        GZip
        
'''   <summary>
        
'''  Deflate压缩
        
'''   </summary>
        Deflate
        
'''   <summary>
        
'''  不支持压缩
        
'''   </summary>
        None
    
End Enum
End Class

编译后,并在web.config文件中添加httpmodule模块配置内容就OK了。

当然也可能将以上代码作出一些修改后直接添加到您的页面基类里使用。

转载于:https://www.cnblogs.com/dreamcat/archive/2010/07/20/1781489.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值