IIS的静态压缩和动态压缩

起因

目前在做的一个工作是和同事一起优化整个应用的其中一个页面,这个页面是通过点击链接打开一个entity window并显示相关数据。由于在应用中我们有多处类似的窗口,所以我们打算将其作为一个案例来编写一个关于我们的程序前后端的Performance Enhancement Guide。由同事负责后端的优化(本人只会前端)。他在做的过程中发现本地传回的response并没有进行压缩,所以他教我如何开启本地的压缩来提升性能。所以这篇文章来记录一下如何在IIS中开启压缩以及其他的一些知识点。

基本概念

我们先来了解一下会用到的术语的定义

IIS简介

官方定义: Internet Information Services (IIS)是一个灵活安全便于管理的Web Server用于hosting网络上的任何资源(e.g. media streaming, 网络应用)
主要竞争对手: Apache, Nginx
运行平台: 只能用于Windows系列平台上,虽然免费但是无法单独安装(附带在Windows系统中)。目前IIS Express作为IIS的简化版本可以被独立安装。
注意:IIS的功能默认是关闭的,需要通过Windows Feature设置并开启

知道了IIS是什么以后,我们再来掌握一下这篇文章的主角,HTTP压缩是什么,有几种类型,采用什么算法进行的压缩,效果如何

HTTP压缩

简言之,HTTP压缩就是通过压缩算法减少请求资源的大小从而提高宽带利用率(bandwidth utilization)的方法

HTTP请求的压缩与解压过程


客户端发送请求并告诉服务器端所接受的压缩编码方式(e.g. gzip, deflate, sdch, br),服务器端(也可能是cdn的服务器)接受请求并根据程序的定义和支持的方式压缩相应资源,在压缩资源后生成相应的response header与response body返回给客户端,客户端接收完请求后进行解码和其他的渲染或者重排等工作



browser生成Reqeust Header并通过Accept-Encoding告知服务器端其支持的压缩格式,如果指定多个,则按优先度排列,最希望获取的格式在最前面。如图中,gzip是最优先的压缩格式



服务器端接受请求后按优先级顺序和自己是否选择压缩算法,完成压缩后生成Response Header并在其中通过Content-Encoding的方式来告知Browser其选择的压缩算法,可以是一种或多种压缩算法,取决于服务器和程序本身的设置
注意:Cache的将会是压缩后的资源。

关于动态和静态的问题着实困扰了我很久,查看了一些资料才分清楚。在IIS和Web Application中,动态静态其实包括两个方面,其一是我开始理解的动态内容和静态内容,但是还有另外一个概念是动态压缩和静态压缩。
让我们先来区分一下什么是Web Application的动态内容和静态内容。在IIS中,用戶可以设置对两种内容的进行压缩,静态的和动态的。

两种内容形式

静态内容指文件并不会根据用户输入发生改变,e.g. JS, CSS, Image and HTML。再如项目一般都有HTML模板,通常不同页面的Navigation或者footer部分都是固定的。而这些内容就会作为Web Application的静态内容
动态内容指存储于数据库并且当用户浏览时动态生成或者改变的内容。指来自ASP.NET, PHP, ASP或其他框架的response

两种压缩方式

动态压缩对于配置在dynamicTypes中的mime类型的请求启用,即每一次请求,server都会对请求的内容进行压缩但是不进行缓存。而静态压缩对于配置在staticTypes中的mime类型的请求启用,当文件第一次被请求时,IIS会将其压缩,然后放入临时文件夹,之后再次对该文件的请求将直接读取临时文件夹中压缩后的版本而不是重新压缩。默认情况下IIS是采取static compression和pre-compression方式的并且会自动保存静态内容在硬盘上。至于哪些类型的文件使用动态压缩哪些使用静态压缩是可以在applicationHost.config(目前只在Windows找到了IIS Express的这个文件但是不能用于IIS)中设置的。这种压缩方式依赖于两个Modules,dynamic module(compdyn.dll)和static module(compstat.dll)。

压缩算法GZIP简介

GNU zip(gzip)是compress压缩方法的替代者,使用gzip压缩后会生成.gz后缀的文件。在Windows中已经包括了gzip的库c:\windows\system32\inetsrv\gzip.dll

IIS压缩的优势

极大的压缩了文件大小,尤其是对于纯文本类型的文件。压缩比甚至可高达70%

缺点

消耗额外的CPU资源用于解压

如何启用本地IIS的压缩

在本地IIS中开启gzip之后只有部分的css文件被gzip了,其他的静态文件并没有被压缩。目前查了资料但是还没有能够成功在本地项目使用gzip。

压缩效果

通过几个文件我们来看下gzip的压缩效果

  1. signalR 2.2.1
    minify之前: 123KB
    minify之后: 36.3KB
    minify & gzip之后: 11.3KB
    可以看到压缩后是原大小的十分之一左右,即使是于minify的版本相比依然减少了三分之二
  2. 打包的多个js文件bundle.js
    minify之前: --
    minify之后: 5.74MB
    minify & gzip之后: 0.8MB (Response Header中的content-length的单位是byte)

references

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,980评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,178评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,868评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,498评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,492评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,521评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,910评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,569评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,793评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,559评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,639评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,342评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,931评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,904评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,144评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,833评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,350评论 2 342

推荐阅读更多精彩内容