zoukankan      html  css  js  c++  java
  • IIS 7 启用 gzip 静态压缩 压缩js和css文件

    搞了很久,不如nginx好弄,不知道怎么修改压缩比,也不知道怎么压缩的规则是啥(管理器上没有写),不过反正出来了,一个js文件900多K变成了100多K

    1、在web.config文件里面加上:

    <configuration>
    <system.webServer>
    <urlCompression doStaticCompression="true" doDynamicCompression="false" />
    </system.webServer>
    </configuration>

    2、启用静态压缩

    3、修改了一个配置文件(实际上不知道有没有起作用)

    C:WindowsSystem32inetsrvconfig > applicationHost.config

    <httpCompression directory="%SystemDrive%inetpub empIIS Temporary Compressed Files" minFileSizeForComp="1024">
    <scheme name="gzip" dll="%Windir%system32inetsrvgzip.dll" />
    <staticTypes>
    <add mimeType="text/*" enabled="true" />
    <add mimeType="message/*" enabled="true" />
    <add mimeType="application/x-javascript" enabled="true" />
    <add mimeType="application/javascript" enabled="true" />  <-- 就只加了这一行,然后iisreset
    <add mimeType="application/atom+xml" enabled="true" />
    <add mimeType="application/xaml+xml" enabled="true" />
    <add mimeType="*/*" enabled="false" />
    </staticTypes>
    </httpCompression>

    因IIS后期不再使用,不打算深入研究了,能压缩就OK。

    PS:好像不稳定,稍隔久一点访问,没有压缩(第一次),强制刷新页面,又都压缩了

    解决:

    1、web.config修改下:

    <configuration>
    <system.webServer>

    <urlCompression doStaticCompression="true" doDynamicCompression="false" />
    <serverRuntime enabled="true" frequentHitThreshold="1" frequentHitTimePeriod="00:10:00"/>  <-- 加了这一行

    </system.webServer>
    </configuration>

    修改了之后,IIS会报500错误,于是 命令行 执行(解锁serverRuntime节点):

    %windir%system32inetsrvappcmd unlock config -section:system.webServer/serverRuntime

    然后就OK了,重启下站点,再访问就都是压缩过的了(原先,每次重启站点,第一次访问,都没压缩,隔久了再访问也是没压缩。)

    这篇文章的这部分内容帮助了我:我的就是MetaBase.xml没有IIsCompressionScheme节点的情况! 引自:http://www.cnblogs.com/caicainiao/archive/2011/11/09/2243270.html


    偶尔失效(一会有效一会无效)的解决方法

    3. 使用文本编辑器打开C:WindowsSystem32inetsrvMetaBase.xml(建议先备份),

    找到Location =“/LM/W3SVC/Filters/Compression/gzip用于设置gzip压缩,

    找到Location =”/LM/W3SVC/Filters/Compression/deflate“用于设置deflate压缩。 上面两个节点紧挨着。并且设置的属性相同。

    如果需要压缩动态文件,则将HcDoDynamicCompression设置为”TRUE“,

    并在HcScriptFileExtensions中增加您要压缩的动态文件后缀名,如aspx;

    如果需要压缩静态文件,则将HcDoStaticCompression和HcDoOnDemandCompression设置为”TRUE“,

    并在HcFileExtensions中增加您需要压缩的静态文件后缀名,如xml、css等;

    HcDynamicCompressionLevel和HcOnDemandCompLevel表示需要的压缩率,数值在0-10, 默认为0。

    HcDynamicCompressionLevel属性说明:HcDynamicCompressionLevel Metabase Property

    HcOnDemandCompLevel 属性说明:HcOnDemandCompLevel Metabase Property

    说明: 这两个属性值一般推荐设置为9, 具有最佳性价比。

    <IIsCompressionScheme    Location="/LM/W3SVC/Filters/Compression/gzip"
        HcCompressionDll = "%windir%system32inetsrvgzip.dll"
        HcCreateFlags="1"
        HcDoDynamicCompression="TRUE"
        HcDoOnDemandCompression="TRUE"
        HcDoStaticCompression="true"
        HcDynamicCompressionLevel="9"
        HcFileExtensions="htm
            html
            txt
            js
            css
            swf
            xml"
        HcOnDemandCompLevel="9"
        HcPriority="1"
        HcScriptFileExtensions="asp
        aspx
        dll
        exe">
    </IIsCompressionScheme>
       

    注意

    1. 在编辑MetaBase.xml前需要停止IIS,可以使用 net stop iisadmin

    2. 修改完成后开启iisadmin服务,并执行iisreset命令

    关于SEO的测试

    压缩是否对SEO有影响,经测试,开启后仍然可以被很好的收录。

    关于对SEO影响的研究文章,还可以参考下面的几篇文章。

    具体的效率问题,将继续监控以作研究。

    如果以上设置无效,或者MetaBase.xml没有响应节点,用以下方式解决

    第一种是在web.config中添加以下内容,将frequentHitThreshold调至1,将frequentHitTimePeriod调制10分钟

    <system.webServer>

    <serverRuntime enabled="true" frequentHitThreshold="1" frequentHitTimePeriod="00:10:00"/>

    </system.webServer>

    第二种方法是打开%windir%system32inetsrvappcmd.exe,然后再命令行界面中输入以下命令字符串,然后回车

    set config -section:system.webServer/serverRuntime -frequentHitThreshold:1

    如果 appcmd.exe 窗口执行无法停留,可以执行连续指令:

    %windir%system32inetsrvappcmd.exe set config -section:system.webServer/serverRuntime -frequentHitThreshold:1
    %windir%system32inetsrvappcmd.exe set config -section:system.webServer/serverRuntime -frequentHitTimePeriod: 00:10:00
  • 相关阅读:
    c++ 网络编程(四) LINUX/windows下 socket 基于I/O复用的服务器端代码 解决多进程服务端创建进程资源浪费问题
    c++ 网络编程(三) LINUX/windows 进程间的通信原理与实现代码 基于多进程的服务端实现
    c++ 网络编程(二) linux 下多进程socket通信 多个客户端与单个服务端交互代码实现回声服务器
    c++ 网络编程(一)TCP/UDP windows/linux 下入门级socket通信 客户端与服务端交互代码
    c++ MFC图像处理CImage类常用操作代码
    vue 模板语法
    占位1
    MongoDB
    Node.js fs-文件系统
    nodeJs 常用模块(一)
  • 原文地址:https://www.cnblogs.com/Denny_Yang/p/7211182.html
Copyright © 2011-2022 走看看