IIS7构造Gzip压缩

本文来自Kevin Yang博客 作者:Kevin Yang

开启配置HTTP压缩(GZip)

在IIS7中配置Gzip压缩相比IIS6来说实在easy了很多。并且默认情况下就是启用GZip压缩的。

假设没有。则能够再功能视图下找到“压缩”项,进入之后就会看到“静态内容压缩”和“动态内容压缩”两个选项,勾上就可以。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveWVmaWdodGVy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

配置启用压缩的文件类型及其它选项

当开启GZip压缩之后,IIS并非对全部内容都启用了压缩,而是有选择的进行压缩。遗憾的是。我们无法直接在IIS7管理器中配置这些压缩选项。

我们首先须要在C:\Windows\System32\inetsrv\config目录下找到applicationhost.config文件。打开之后找到例如以下一节内容:

<httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files">

    <scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" />

    <dynamicTypes>

        <add mimeType="text/*" enabled="true" />

        <add mimeType="message/*" enabled="true" />

        <add mimeType="application/x-javascript" enabled="true" />

        <add mimeType="*/*" enabled="false" />

    </dynamicTypes>

    <staticTypes>

        <add mimeType="text/*" enabled="true" />

        <add mimeType="message/*" enabled="true" />

        <add mimeType="application/javascript" enabled="true" />

        <add mimeType="*/*" enabled="false" />

    </staticTypes>

</httpCompression>

我们能够看到,IIS实际上是依据MIME类型来决定是否启用HTTP压缩的,以及压缩比之类的选项。能够看出,图片默认情况下是不被压缩的。这是由于图片的压缩比太低了。

我们注意到,对于Javascript来说,上面对不同的mime类型配置了不同的压缩方式。Javascript有三种常见的Mime类型,text/javascript,application/x-javascript。application/javascript。这三种类型都是合法的,在现代浏览器中也不存在什么区别。可是因为IIS7中Js文件的mime类型默认被设置为application/x-javascript。也就是说对于js文件,使用的是动态内容压缩而不是静态内容压缩,因此会导致js文件有时经过压缩的,有时却没有压缩。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveWVmaWdodGVy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="" style="color:rgb(42,42,42)">

因为js文件通常稳定之后不会再被改动了,因此建议改成静态压缩——即把dynamicTypes这一节中的application/x-javascript挪到静态压缩节中。

这样保证每次脚本都是被压缩过返回的。

静态压缩及动态压缩的差别

IIS7中的HTTP压缩分为“静态内容压缩”和“动态内容压缩”。事实上这两个名字第一次接触非常费解。

什么是动态内容什么又是静态内容?实际上,准确的翻译应该是“静态压缩”和“动态压缩”。

这两个词反应了IIS的压缩行为。

对于配置在staticTypes节中的mime类型,将会启用静态压缩,也就是说。当文件第一次被请求的时候。IIS会将其压缩,然后放入暂时目录中。下次再有人请求此文件时直接从暂时目录中取出压缩后的版本号而不用又一次运行压缩的过程。配置在dynamicTypes一节中的mime类型的http请求都将启用动态压缩。即每一次请求,主机都会对请求的内容——可能是存放在文件系统中的静态文件,也可能是ISAPI返回的内容——进行压缩,而不会对其进行缓存。这个压缩比率因主机性能不同而会有所调整。所以我们在请求js文件的时候才会发现js文件有时压缩有时不压缩的情况。

显而易见。静态压缩会占用一定的存储空间,可是速度快,而动态压缩不占用存储空间。可是占用CPU时间,并且压缩比不恒定。而对于经过ISAPI的请求。则不能使用静国家压缩。例如,对于WCF返回内容。

版权声明:本文博主原创文章。博客,未经同意不得转载。

IIS7构造Gzip压缩的更多相关文章

  1. IIS7 启用GZip压缩

    GZip压缩通常会达到70%以上的压缩率,如果是手机Web这无疑会使网站的访问速度大大增加,无论是CSS合并.JS合并.图片合并都不如GZip压缩来得简单直接.如果一个网页是100K,那么启用GZip ...

  2. IIS7启用GZip压缩

    本文转载自 http://www.cnblogs.com/kissdodog/p/6252129.html GZip压缩通常会达到70%以上的压缩率,如果是手机Web这无疑会使网站的访问速度大大增加, ...

  3. [转帖]IIS7配置Gzip压缩

    IIS7配置Gzip压缩 https://www.cnblogs.com/coce/p/6804373.html   II7中自带了gzip功能,理论上应该比ii6配置起来应该简单一点,但是容易出的问 ...

  4. IIS7配置Gzip压缩 JS压强失败的原因

    开启配置HTTP压缩(GZip) 在IIS7中配置Gzip压缩相比IIS6来说实在容易了许多,而且默认情况下就是启用GZip压缩的.如果没有,则可以再功能视图下找到“压缩”项,进入之后就会看到“静态内 ...

  5. IIS7配置Gzip压缩

    II7中自带了gzip功能,理论上应该比ii6配置起来应该简单一点,但是容易出的问题比较多.有的II7配置web服务器角色的时候可能没有安装启用动态内容压缩,所以这个钩子是灰色的,需要再次安装. 如图 ...

  6. IIS7.5打开GZip压缩,同时启用GZip压缩JS/CSS文件的设置方法[bubuko.com]

    IIS7.5或者IIS7.0开启GZip压缩方法:打开IIS,在右侧点击某个网站,在功能视图中的“IIS”区域,双击进入“压缩”,如图下图: 分别勾选“启用动态内容压缩”和“启用静态内容压缩”.这样最 ...

  7. iis7 压缩js文件和启用gzip压缩

    压缩js文件 打开IIS 7的配置文件:c:\windows\system32\inetsrv\config\applicationhost.config 在<staticContent loc ...

  8. IIS7.5开启GZip压缩

    在IIS7.5选择要开启GZip压缩的网站,在功能视图中找到并双击"压缩"图标,在压缩界面中钩选"启用静态内容压缩"和"启用动态内容压缩", ...

  9. IIS7.5配置Gzip压缩解决方案(转)

    开启配置HTTP压缩(GZip) 在IIS7中配置Gzip压缩相比IIS6来说实在容易了许多,而且默认情况下就是启用GZip压缩的.如果没有,则可以再功能视图下找到“压缩”项,进入之后就会看到“静态内 ...

随机推荐

  1. Codeforce 143B - Help Kingdom of Far Far Away 2

    B. Help Kingdom of Far Far Away 2 time limit per test 2 seconds memory limit per test 256 megabytes ...

  2. Hawk-数据抓取工具

    Hawk-数据抓取工具:简明教程   Hawk: Advanced Crawler& ETL tool written in C#/WPF 1.软件介绍 HAWK是一种数据采集和清洗工具,依据 ...

  3. scala akka 修炼之路5(scala特质应用场景分析)

    scala中特质定义:包括一些字段,行为(方法/函数/动作)和一些未实现的功能接口的集合,能够方便的实现扩展或混入到已有类或抽象类中. scala中特质(trait)是一个非常实用的特性,在程序设计中 ...

  4. HDU 4028 The time of a day STL 模拟题

    暴力出奇迹.. #include<stdio.h> #include<iostream> #include<algorithm> #include<vecto ...

  5. js:进一步关闭(范围:下一个)

    function fn1(){   //创建一个数组   var fns = new Array();   //i这个变量是保存在fn1这个作用域中   for(var i=0;i<10;i++ ...

  6. WPF自定义ListBox样式

    <!--竖向--> <Style x:Key="ListBoxStyle1" TargetType="{x:Type ListBox}"> ...

  7. 浅谈JAVA ThreadPoolExecutor(转)

    这篇文章分为两部分,前面是ThreadPoolExecutor的一些基本知识,后一部分则是Mina中一个特殊的ThreadPoolExecutor代码解析.算是我的Java学习笔记吧. 基础 在我看来 ...

  8. IOS 与ANDROID框架及应用开发模式对照一

    IOS 和ANDROID操作系统都是眼下流行的移动操作系统,被移动终端和智能设备大量採用,两者都採用了先进的软件技术进行设计,为了方便应用开发两者都採用了先进的设计模式. 两者在框架设计上都採用了什么 ...

  9. CI控制器调用内部方法并加载对应模板的做法

    当我打开链接:http://localhost/3g/index/open/a/b? from=timeline后,推断链接中的from是否等于timeline,假设等于timeline.那么就调用控 ...

  10. 经常使用vi编辑命令

    进入 vi 该命令  vi filename :打开或新建文件.在第一行和第一光标  vi +n filename :打开文件,并将光标置于第 n 行首  vi + filename :打开文件,并将 ...