Compression 如何在IIS 7.5中启用GZIP压缩
我想用GZIP压缩我的文件。您可以与GZIP共享压缩文件的web.config代码吗 上传web.config文件后,我还有什么要做的吗 HttpModule中的全局Gzip 如果您没有访问共享主机的权限,请访问最终的IIS实例。您可以创建一个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
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。要安装“动态内容压缩”: