Compression 如何在IIS 7.5中启用GZIP压缩

Compression 如何在IIS 7.5中启用GZIP压缩,compression,gzip,web-config,Compression,Gzip,Web Config,我想用GZIP压缩我的文件。您可以与GZIP共享压缩文件的web.config代码吗 上传web.config文件后,我还有什么要做的吗 HttpModule中的全局Gzip 如果您没有访问共享主机的权限,请访问最终的IIS实例。您可以创建一个HttpModule,将此代码添加到每个HttpApplication。开始请求事件:- HttpContext context = HttpContext.Current; context.Response.Filter = new GZipStream

我想用GZIP压缩我的文件。您可以与GZIP共享压缩文件的web.config代码吗

上传web.config文件后,我还有什么要做的吗

HttpModule中的全局Gzip 如果您没有访问共享主机的权限,请访问最终的IIS实例。您可以创建一个
HttpModule
,将此代码添加到每个
HttpApplication。开始请求事件:-

HttpContext context = HttpContext.Current;
context.Response.Filter = new GZipStream(context.Response.Filter, CompressionMode.Compress);
HttpContext.Current.Response.AppendHeader("Content-encoding", "gzip");
HttpContext.Current.Response.Cache.VaryByHeaders["Accept-encoding"] = true;

如果有人遇到了这个问题,并且正在寻找比JC Raja的帖子更为最新的答案或复制粘贴答案或针对多个版本的答案,我发现如下:

谷歌有一个非常坚实,易于理解的介绍如何工作,什么是有利的和不有利的。 他们推荐HTML5样板项目,该项目为不同版本的IIS提供了解决方案:

  • .NET版本3
  • .NET第4版
  • .NET版本4.5/MVC 5
可从以下网址获得: 他们有web.configs,您可以将他们的更改复制并粘贴到您的web.config中,并查看更改,这比浏览一堆博客文章要容易得多

以下是.NET 4.5版的web.config设置:


编辑:链接现在脱机,但您可以在此处查看代码/内容:)

相反,我们发现了本·福斯特(Ben Foster)写的这篇文章 如果您可以修改applicationHost.config(运行您自己的服务器),您可以打开该配置文件并添加要压缩的mimetype(我根据API从Web.config返回给客户端的内容提取了相关的mimetype)。保存该文件,IIS将拾取您的更改,回收应用程序池,您的WebAPI将开始向请求它的客户端返回gzip压缩响应

如果没有看到gzip响应,请使用Fiddler或Chrome/Firefox开发工具检查响应内容类型,并确保它与您添加的内容匹配。我不得不在Chrome开发工具中更改视图模式(使用大请求行),以确保它显示总大小和传输大小。如果一切都有效,请尝试重新启动服务器一次,以确保正确应用了该服务器。我确实有一个语法错误,当我在IIS中打开站点时,IIS突然打开了一条关于我必须在配置文件中修复的解析错误的消息

<httpCompression directory="%TEMP%\iisexpress\IIS Temporary Compressed Files">
    <scheme name="gzip" dll="%IIS_BIN%\gzip.dll" />
    <dynamicTypes>
        ...

        <!-- compress JSON responses from Web API -->           
        <add mimeType="application/json" enabled="true" /> 

        ...
    </dynamicTypes>
    <staticTypes>
        ...
    </staticTypes>
</httpCompression>

...
...
...

GZip压缩可以直接通过IIS启用。

首先,开放IIS,

转到你希望调整的网站,点击压缩页面。如果没有安装Gzip,您将看到如下内容:

“未安装动态内容压缩模块。”我们应该修复此问题。因此,我们转到“打开或关闭Windows功能”,选择“动态内容压缩”,然后单击“确定”按钮

现在,如果我们回到IIS,我们应该看到压缩页面已经更改。在这一点上,我们需要确保选中了动态压缩复选框,我们就可以开始了。压缩已启用,我们的动态内容将被压缩

测试-检查是否启用了GZIP压缩

要测试压缩是否正常工作,请使用Chrome或Firefox Firebug中的开发者工具,并确保设置了HTTP响应头:

Content-Encoding: gzip
把这个放在#哇 结果表明,IIS具有从1到9可配置的不同压缩级别。 我的一些动态SOAP请求最近已经失控。未压缩的SOAP大约为14MB,压缩的为3MB

我注意到在Fiddler中,当我在
Transformer
下压缩我的请求时,它的大小约为470KB,而不是3MB,所以我想一定有办法获得更好的压缩

最终发现了这篇内容丰富的博文

我继续运行这个命令(后面是iisreset):

C:\Windows\System32\Inetsrv\Appcmd.exe set config-部分:httpCompression-[name='gzip']。静态压缩级别:9-[name='gzip']。动态压缩级别:9

将动态级别更改为9,现在我的压缩soap与Fiddler给我的匹配-大约是现有压缩文件大小的1/7


Milage会有所不同,但对于SOAP来说,这是一个巨大的改进。

这更多的是对上述最佳答案的补充(GZip压缩可以直接通过IIS启用),如果您在Windows桌面上运行IIS,这是正确的

如果您在Windows Server上运行IIS,则此内容压缩功能位于与桌面Windows不同的位置(不在“控制面板”的“程序和功能”中)。首先打开“服务器管理器”,然后单击“管理->添加角色和功能”,然后继续单击“下一步”(如果您从该实例管理多个服务器,请确保在看到服务器列表时选择了正确的服务器),直到找到服务器角色,向下滚动并打开“Web服务器(IIS)”,然后单击“Web服务器”,然后单击“性能”“动态内容压缩”,然后单击安装。我在Server 2016 Standard上对此进行了测试,因此如果在早期版本的服务器上进行测试,可能会有细微的差异


然后按照测试中的说明进行操作-检查GZIP压缩是否已启用

有时,无论您做什么,或者查看整个internet帖子。在服务器的applicationhost.config的MIMETYPES上进行尝试


这比修改*.config文件容易得多。我在响应头中看到内容编码:gzip,但它仍然不起作用。此外,链接也不起作用。如果有人遇到同样的问题,无法在IIS中为json启用gzip(在我的例子中是v8.5)。请尝试此博客。基本上,您必须使用
cmd
64位编辑器
进行这些更改,然后重新启动
Windows Process Activation Service
服务。现在参考404。要安装“动态内容压缩”: