IIS上启用Gzip压缩(HTTP压缩) 详解

一.摘要

本文总结了如何为使用IIS托管的网站启用Gzip压缩, 从而减少网页网络传输大小, 提高用户显示页面的速度.

二.前言.

本文的知识点是从互联网收集整理, 主要来源于中文wiki.  使用YSlow检测网站启用了哪些优化时, Gzip是十分关键的一项. 启动Gip压缩将立竿见影的减少页面的网络传输大小.

三.HTTP压缩概述

HTTP压缩是在Web服务器和浏览器间传输压缩文本内容的方法。HTTP压缩采用通用的压缩算法如gzip等压缩HTML、JavaScript或CSS文件。压缩的最大好处就是降低了网络传输的数据量,从而提高客户端浏览器的访问速度。当然,同时也会增加一点点服务器的负担。Gzip是比较常见的一种HTTP压缩算法。

四.HTTP压缩工作原理

Web服务器处理HTTP压缩的工作原理如下:

1.Web服务器接收到浏览器的HTTP请求后,检查浏览器是否支持HTTP压缩;
在用户浏览器发送请求的HTTP头中,  带有"Accept-Encoding: gzip, deflate"参数则表明支持gzip和deflate两种压缩算法.

2.如果浏览器支持HTTP压缩,Web服务器检查请求文件的后缀名;
静态文件和动态文件后缀启动要所都需要在MetaBase.xml 中设置.
静态文件需要设置: HcFileExtensions Metabase Property (单击跳转到MSDN说明)
动态文件需要设置: HcScriptFileExtensions Metabase Property (单击跳转到MSDN说明)

3.如果请求文件是HTML、CSS等静态文件并且文件后缀启用了压缩,则Web服务器到压缩缓冲目录中检查是否已经存在请求文件的最新压缩文件;

4.如果请求文件的压缩文件不存在,Web服务器向浏览器返回未压缩的请求文件,并在压缩缓冲目录中存放请求文件的压缩文件;

5.如果请求文件的最新压缩文件已经存在,则直接返回请求文件的压缩文件;

6.如果请求文件是ASPX等动态文件并且文件后缀启用了压缩,Web服务器动态压缩内容并返回浏览器,压缩内容不存放到压缩缓存目录中。

五. 在IIS中启用HTTP压缩

IIS默认并不支持HTTP压缩,需要进行简单的配置

1.打开Internet信息服务(IIS)管理器,右击"网站"->"属性",选择"服务"。在"HTTP压缩"框中选中"压缩应用程序文件"和"压缩静态文件",按需要设置"临时目录"和"临时目录的最大限制";

2.提醒: 经试验此步骤在本人机器上没有作用, 可以忽略.
在Internet信息服务 (IIS)管理器,右击"Web服务扩展"->"增加一个新的Web服务扩展...",在"新建Web服务扩展"框中输入扩展名"HTTP Compression",添加"要求的文件"为C:\WINDOWS\system32\inetsrv\gzip.dll,其中Windows系统目录根据您的安装可能有所不同,选中"设置扩展状态为允许";

3.使用文本编辑器打开C:\Windows\System32\inetsrv\MetaBase.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, 具有最佳性价比.但是在我的window server 2003上, 压缩率无论如何设置, jQuery和jQuery UI两个文件(58k/188k)压缩后的大小一直相同.(20k/45k). 

下面是我的实例:

<IIsCompressionScheme    Location ="/LM/W3SVC/Filters/Compression/deflate"HcCompressionDll="%windir%\system32\inetsrv\gzip.dll"HcCreateFlags="0"HcDoDynamicCompression="TRUE"HcDoOnDemandCompression="TRUE"HcDoStaticCompression="true"HcDynamicCompressionLevel="9"HcFileExtensions="htmhtmltxtjscss swfxml"HcOnDemandCompLevel="9"HcPriority="1"HcScriptFileExtensions="asp             aspxdllexe">
</IIsCompressionScheme>
<IIsCompressionScheme    Location ="/LM/W3SVC/Filters/Compression/gzip"HcCompressionDll="%windir%\system32\inetsrv\gzip.dll"HcCreateFlags="1"HcDoDynamicCompression="TRUE"HcDoOnDemandCompression="TRUE"HcDoStaticCompression="true"HcDynamicCompressionLevel="9"HcFileExtensions="htmhtmltxtjscss swfxml"HcOnDemandCompLevel="9"HcPriority="1"HcScriptFileExtensions="asp             aspxdllexe">
</IIsCompressionScheme>

4.编辑完毕后保存MetaBase.xml文件;如果文件无法保存,则可能IIS正在使用该文件。打开"开始"->"管理工具"->"服务",停止"IIS Admin Service"后,即可保存;

5.最后,重新启动IIS。可以到HTTP压缩测试网站验证结果.以jQuery为例, 核心类库和UI类库原始大小分别是57k和188k,压缩后分别是20k和45k:

我们通过Http头中的: Content-Encoding:gzip 属性判断返回后的数据已经启用了gzip压缩:
 
使用YSlow检测, 当只启动静态文件压缩时, Gzip压缩评级为B:
 
当同时启动了动态文件压缩时, Gzip压缩评级为A:

六.要点总结

1. 在修改MetaBase.xml文件时, 要停止"IIS Admin Service"服务. 否则无法保存.

2.静态压缩和动态压缩率最好设置为9.

3.上文的步骤2, 即使不添加Web服务扩展效果也是相同的.

4.压缩率设置对js文件不起作用, 压缩后大小总是相同的.

5.图片文件即使启用了gzip压缩大小也没有变化.

七. 总结

本文总结了如何在IIS中启用Gzip压缩.  在半年前的项目中我为网站启用了Gzip, 今天整理此文主要为了整理自己的知识以便以后忘记时复习.

转载于:https://www.cnblogs.com/JoinZhang/archive/2010/07/18/1780067.html

启用Gzip压缩(IIS)提高客户端网站访问速度相关推荐

  1. Apache开启Gzip压缩技术,加快网页访问速度

    现在网站一般都开启了gzip压缩,我们可以查看到. 特别是大型网站,开启了gzip将对传输效率大大的提高, 一般压缩率可达75%,也就是100kb,压缩后只有25k的样子. 1.在httpd.conf ...

  2. Nginx开启Gzip压缩大幅提高页面加载速度

    2019独角兽企业重金招聘Python工程师标准>>> 有时候我们会碰到API接口响应很快,但是完成速度很慢的情况,其主要原因是数据传输过大.因此我们需要对数据进行压缩,现这里采用N ...

  3. 在IIS上启用Gzip压缩 (HTTP压缩)方法

    本文总结了如何为使用IIS托管的网站启用Gzip压缩, 从而减少网页网络传输大小, 提高用户显示页面的速度. 一.摘要 本文总结了如何为使用IIS托管的网站启用Gzip压缩, 从而减少网页网络传输大小 ...

  4. 网站启用GZip压缩后,速度快了3倍!

    GZip压缩,是一种网站速度优化技术,也是一把SEO优化利器,许多网站都采用了这种技术,以达到提升网页打开速度.缩短网页打开时间的目的. 本文是一篇研究性文章,将通过某个案例来给大家显示网站采用GZi ...

  5. 更改web.config,让godady的win主机启用gzip压缩

    阅读本文首先确定你正在使用或者准备使用godaddy的windows虚拟主机,当然也会适合别的windows主机,同时,请确定你的虚拟主机的iis模式是7而不是6,因为godaddy同时还支持iis6 ...

  6. 如何让提高网站访问速度

    如何让提高网站访问速度 整理方案一: 网站访问速度可以直接影响到网站的流量,而网站的访问量几乎与网站的利益直接挂钩,因此网站的速度问题成为企业及站长十分关注的问题.现在网站越来越多,不少朋友的网站打开 ...

  7. Tomcat启用GZIP压缩,提升web性能

    一.前言 最近做了个项目,遇到这么一个问题:服务器返回给客户端的json数据量太大(大概65M),在客户端加载了1分多钟才渲染完毕(当然这加载时间也和本地的下行带宽有关),费时耗流量,用户体验极其不好 ...

  8. feign 启用gzip压缩

    目录 1.项目中启用gzip压缩 2.在feign 服务提供方开启http压缩(很重要) 3.启用httpclient 4.还有一点很容易忽略的,引入httpclient jar包,同时注意和open ...

  9. 提高网站访问速度的十个技巧

     网站的访问速度和性能对用户体验来说是非常重要的.如果你的网站访问非常的慢,你不仅会失去用户,而且更可怕的是你会失去潜在的客户.像Google这样的互联网巨头也会把网站访问速度作为排名的一个参数. ...

最新文章

  1. 思科服务器查看生成树协议,CISCO中生成树协议的配置
  2. tomcat升级后报错: Invalid character found in the request target.
  3. C#让程序只运行一次实例
  4. 好文推荐 | 分布式锁用Redis好,还是Zookeeper好?
  5. 华中科技大学 计算机组成原理 上机实验1 2018
  6. XML Schema 基本结构
  7. 使用 OpenCL.Net 进行 C# GPU 并行编程
  8. EDA风格与Reactor模式
  9. java语言编程三角形图形_编程题:编写程序输入三角形的3条边长,计算并输出... 求助一道JAVA编程题:编写一个类似记事本的图形用......
  10. OpenCV读取视频并获得相关属性信息
  11. Aizu - 1386 Starting a Scenic Railroad Service (思维乱搞)
  12. 安装 PHP memcached 扩展遇到的3个问题
  13. Linux获取管理员权限的相关命令
  14. vant + Vue创建项目全过程
  15. 签到太麻烦?全自动一键签到网易云音乐,b站,京东,百度贴吧等网站
  16. 云桌面 瘦终端_云终端与瘦终端简介
  17. font在html语言中是什么意思,font标签什么意思
  18. 关于Dev C++等软件突然提示16位应用程序不兼容的问题
  19. 一个微信关联管理多个腾讯云账号
  20. Leetcode1160. 拼写单词(C语言)

热门文章

  1. c语言程序窗口后台持续监测,用c语言实现后台运行的、每隔30s检查一次的、带有日志功能的断网重新连接程序...
  2. cdrx4自动排版步骤_现在的大学生,都不会论文排版了
  3. mysql的B+树如何存储主键和数据,磁盘io和innodb页大小的一些问题
  4. 如何把代码写的优雅一些
  5. 史上超级详细:HashMap源码分析,你了解到源码的魅力了嘛
  6. python【蓝桥杯vip练习题库】ALGO-195 1的个数
  7. 标题:分数(2018C语言A组(1))
  8. abovedisplayskip无效_latex减少图片和图片解释文字之间的距离、调整公式与正文间距离,调整空白大小:...
  9. Hp linux tar 解压,tar命令的用法(百度)(HP_UX)
  10. phpexecl保存mysql_【PHP】将数据库表保存为Excel(PHPExcel)