美文网首页
IIS的静态压缩和动态压缩

IIS的静态压缩和动态压缩

作者: 小弟lcxdi8887 | 来源:发表于2017-03-25 08:08 被阅读0次

起因

目前在做的一个工作是和同事一起优化整个应用的其中一个页面,这个页面是通过点击链接打开一个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

相关文章

  • IIS的静态压缩和动态压缩

    起因 目前在做的一个工作是和同事一起优化整个应用的其中一个页面,这个页面是通过点击链接打开一个entity win...

  • 编译命令

    创建静态库 创建动态库 ar命令 ar压缩目标文件,并对其进行编号和索引,形成静态库。同时也可以解压缩静态库,查看...

  • 负载均衡

    什么是静态资源 nginx作为WEB静态资源的原理 CDN示例 配置语法 静态文件的压缩 对可压缩的静态资源压缩比...

  • Unity3d面向英特尔 x86 平台的 Unity* 优化指南

    目录 编辑器优化 压缩纹理 移动存储着色器 静态批处理 动态批处理 HDR – 高动态范围 选择最佳渲染路径 注意...

  • Linux_251_nginx静态资源压缩配置

    静态资源压缩 nginx支持gzip对资源压缩传输,经过gzip压缩后的页面大小可以为原本的30%甚至更小,用户浏...

  • 面试汇总浏览器相关知识点

    前端性能优化方案? 减少页面体积,提升网络加载 静态资源的压缩合并(JS 代码压缩合并、CSS 代码压缩合并、雪碧...

  • 编译命令

    目录 一、生成目标文件: .o 二、查看调试信息 三、查看文件内容 四、静态库的压缩和解压缩 五、创建静态库 六、...

  • 压缩静态资源

    使用gulp 压缩静态资源 在项目的根目录下执行以下命令: 在博客根目录下新建 gulpfile.js,并填入以下...

  • 安装包大小优化

    1.常规的安装包优化 图片压缩 资源动态加载 Lint工具 极限压缩 Proguard 混淆 2.资源文件再压缩 ...

  • iOS 图片压缩总结

    一.压缩方式和方法 1.压缩方式 1.1 质量压缩1.2 尺寸压缩1.3 质量和尺寸共同压缩 2.压缩方法 2.1...

网友评论

      本文标题:IIS的静态压缩和动态压缩

      本文链接:https://www.haomeiwen.com/subject/pbgqottx.html