网站速度优化模块HttpCompressionModule

为了优化网站的访问速度,准备采用HttpCompressionModule 6对传输数据进行压缩,下载了HttpCompressionModule 6 , 并按照示例程序中的web.config配置了网站的web.config。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
   <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
   <sectionGroup name="blowery.web">
         <section name="httpCompress" type="blowery.Web.HttpCompress.SectionHandler, blowery.Web.HttpCompress"/>
      </sectionGroup>
     </configSections>
  <appSettings>
    <add key="FCKeditor:UserFilesPath" value="/KeyuSoftShanyou/UserFiles" />
    <add key="SearchIndexDir" value="~/index" />
  </appSettings>
 
 
  <!-- config section for my http module -->
  <blowery.web>
    <!--
   Here's an example on how to change the algorithm or compression level
 
      <compressionModule preferredAlgorithm="deflate|gzip" compressionLevel="high|normal|low"/>
 
   so, to use deflate by default, and high compression, you would use the following line
   -->
    <httpCompress preferredAlgorithm="gzip" compressionLevel="high">
      <excludedMimeTypes>
        <add type="image/jpeg"/>
        <add type="image/png"/>
        <add type="image/gif"/>
      </excludedMimeTypes>
      <excludedPaths>
        <!--<add path="NoCompress.aspx"/>-->
      </excludedPaths>
    </httpCompress>
  </blowery.web>
 
  <system.web>   
 
 
     <httpModules>
 <!-- <add type="KeyuSoftShanyou.Util.NHSessionModule, KeyuSoftShanyou" name="NHSessionModule" />-->
         <add name="CompressionModule" type="blowery.Web.HttpCompress.HttpModule, blowery.web.HttpCompress"/>
     </httpModules>
 
 
    <authentication mode="Forms">
  <forms name="shanyouCookie" loginUrl="Admin/login.aspx" protection="All" timeout="90"/>
 </authentication>  
    <authorization>  <allow users="*" />   </authorization>
    <compilation        defaultLanguage="c#"      debug="true"  />
    <customErrors   defaultRedirect="Error.aspx"  mode="RemoteOnly" /> 
    <trace   enabled="false"    requestLimit="10"        pageOutput="false"
        traceMode="SortByTime"
  localOnly="true"
    />
 
    <sessionState 
            mode="InProc"
            stateConnectionString="tcpip=127.0.0.1:42424"
            sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes"
            cookieless="false" 
            timeout="20" 
    />
    <globalization  requestEncoding="utf-8" responseEncoding="utf-8" />
     <!-- 2003-12-03, Rob Eberhardt - http://slingfive.com/demos/browserCaps/  firefox 浏览器问题 -->
<browserCaps>
  <!-- GECKO Based Browsers (Netscape 6+, Mozilla/Firebird, ...) //-->
  <case match="^Mozilla/5\.0 \([^)]*\) (Gecko/[-\d]+)? (?'type'[^/\d]*)([\d]*)/(?'version'(?'major'\d+)(?'minor'\.\d+)(?'letters'\w*)).*">
    browser=Gecko
    type=${type}
    frames=true
    tables=true
    cookies=true
    javascript=true
    javaapplets=true
    ecmascriptversion=1.5
    w3cdomversion=1.0
    css1=true
    css2=true
    xml=true
    tagwriter=System.Web.UI.HtmlTextWriter
    <case match="rv:(?'version'(?'major'\d+)(?'minor'\.\d+)(?'letters'\w*))">
      version=${version}
      majorversion=${major}
      minorversion=${minor}
      <case match="^b" with="${letters}">
        beta=true
      </case>
    </case>
  </case>
 
  <!-- AppleWebKit Based Browsers (Safari...) //-->
  <case match="AppleWebKit/(?'version'(?'major'\d)(?'minor'\d+)(?'letters'\w*))">
    browser=AppleWebKit
    version=${version}
    majorversion=${major}
    minorversion=0.${minor}
    frames=true
    tables=true
    cookies=true
    javascript=true
    javaapplets=true
    ecmascriptversion=1.5
    w3cdomversion=1.0
    css1=true
    css2=true
    xml=true
    tagwriter=System.Web.UI.HtmlTextWriter
    <case match="AppleWebKit/(?'version'(?'major'\d)(?'minor'\d+)(?'letters'\w*))( \(KHTML, like Gecko\) )?(?'type'[^/\d]*)/.*$">
      type=${type}
    </case>
  </case>
  <!-- Konqueror //-->
  <case match = "Konqueror/(?'version'(?'major'\d+)(?'minor'\.\d+)(?'letters'));\w*(?'platform'[^\)]*)">
    browser=Konqueror
    version=${version}
    majorversion=${major}
    minorversion=${minor}
    platform=${platform}
    type=Konqueror
    frames=true
    tables=true
    cookies=true
    javascript=true
    javaapplets=true
    ecmascriptversion=1.5
    w3cdomversion=1.0
    css1=true
    css2=true
    xml=true
    tagwriter=System.Web.UI.HtmlTextWriter
  </case>
</browserCaps> 
 </system.web>
  <!-- This section contains the log4net configuration settings --> 
   <log4net>  <!-- Define some output appenders --> 
    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
       <param name="File" value="log.txt" /> 
       <param name="AppendToFile" value="true" />  
       <param name="MaxSizeRollBackups" value="2" /> 
       <param name="MaximumFileSize" value="100KB" />  
       <param name="RollingStyle" value="Size" />   
       <param name="StaticLogFileName" value="true" /> 
       <layout type="log4net.Layout.PatternLayout">   
  <param name="Header" value="[Header]\r\n" /> 
  <param name="Footer" value="[Footer]\r\n" />   
  <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />  
       </layout> 
     </appender>  
    <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">   
  <layout type="log4net.Layout.PatternLayout">  
    <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] &lt;%X{auth}&gt; - %m%n" />   
    </layout>  </appender>  <!-- Set root logger level to ERROR and its appenders -->  
    <root>
    <level value="ERROR" /> 
        <appender-ref ref="RollingLogFileAppender" />  
        <appender-ref ref="ConsoleAppender" /> 
    </root>  
        <!-- Print only messages of level DEBUG or above in the packages --> 
      <logger name="IBatisNet.DataMapper.Configuration.Cache.CacheModel"> 
          <level value="DEBUG" /> 
       </logger> 
 
        <logger name="IBatisNet.DataMapper.Configuration.Statements.PreparedStatementFactory">  
             <level value="DEBUG" /> 
         </logger>  
     <logger name="IBatisNet.DataMapper.LazyLoadList">  
     <level value="DEBUG" />
     </logger> 
 </log4net>
 
</configuration>

使用效果: 使用HttpCompressionModule自带的Fetch工具进行测试,测试结果如下:

测试结果说明: 第一行数据是未使用HttpCompressionModule的测试结果。 第二行数据是使用deflate压缩算法进行压缩后的测试结果。 第二列数据是Web服务器传递到浏览器的文件大小。很明显,压缩后传输数据大大减少,有效地节约了带宽。 TTFB—首字节平均响应时间(Gets the number of milliseconds that have passed before the first byte of the response was received.) TTLB—末字节平均响应时间(Gets the number of milliseconds that passed before the last byte of the response was received. ) Transit—传输数据到浏览器的时间。 从测试结果可以看出, 采用HttpCompressionModule后访问速度有明显改善。

http://www.asp.net/ControlGallery/ControlDetail.aspx?Control=696&tabindex=2

http://www.blowery.org/code/HttpCompressionModule.html

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Alice

iOS 推送原理

APNs:Apple Push Notification server 苹果推送通知服务 苹果的APNs允许设备和苹果的推送通知服务器保持连接,支持开发者推送...

15430
来自专栏小詹同学

反爬虫和反反爬虫(上篇)

公众号爬取今日头条的那一期,不少小伙伴反应爬取下来的图片无法查看或者爬取不了,小詹也重新试了下,的确是的,写那篇推文的时候,头条还比较友好,没有添加反爬措施,大...

40020
来自专栏带你撸出一手好代码

开发了一个小工具

国庆因为有事,没有像朋友圈里的同学一样出去浪。闲暇时间, 为了克服平时使用电脑时的一个坏习惯,我开发了一个小工具来帮助自己。 平时使用电脑时, 我喜欢把所有东...

31580
来自专栏JAVA烂猪皮

kafka 数据可靠性深度解读

Kakfa起初是由LinkedIn公司开发的一个分布式的消息系统,后成为Apache的一部分,它使用Scala编写,以可水平扩展和高吞吐率而被广泛使用。目前越来...

16610
来自专栏linjinhe的专栏

理解 CPU 利用率

在 Linux shell 上执行 top 命令,可以看到这样一行 CPU 利用率的数据:

40360
来自专栏杨建荣的学习笔记

需要了解的pssh(r11笔记第28天)

昨天的一篇文章,关于ssh命令的几个使用小技巧(r11笔记第27天),也收到了不少朋友的反馈,其中有个朋友提议说还是用pssh吧,我想想也是。 对...

35860
来自专栏文渊之博

数据库压缩备份提高备份效率

背景     在数据库的备份过程中有很多参数,前几日发现公司的备份数据库job运行的很慢,就去研究了一下,发现在备份程序中都没有启用压缩,加上压缩以后有发现效率...

26490
来自专栏数据和云

RAC一个节点自动重启问题分析

题记:在RAC数据库的故障当中,节点重启的现象很常见,在这种问题的处理当中,有一定的规律性。为了更好的说明这个问题的处理过程,保证出现该类问题的时候,能够有序的...

41150
来自专栏落影的专栏

iOS近距离实时通信解决方案

前言 最近研究iOS设备间的近距离实时通信,对其解决方案进行了解,整理如下: ? 其中AirDrop常用于iOS/OS X系统间分享图片、视频等,但实...

39740
来自专栏黑白安全

iOS安全基础之钥匙串与哈希

本文最初是由Chris Lowe编写的,后来经过Ryan Ackermann(ios系统开发者)的修改,已经可以针对最新的Xcode 9.2,Swift 4,i...

12120

扫码关注云+社区

领取腾讯云代金券