asp.net – 在代码GZipping中的IIS压缩?
我正在添加gzipping到我的.net 4站点的所有静态内容和html输出.
我还在IIS 7.5中启用了压缩(静态和动态),我发现在IIS中启用压缩会覆盖我的Vary:Accept-Encoding标头以获取这些资源. 所以,我想知道的是,是否真的需要在IIS中启用压缩,因为我已经在解压缩了东西? 所以,我做了一些测试,我发现如下: Utilizing IIS Static and Dynamic Compression,with code compression: CPU Load: 35% Memory Load: 28M Utilizing IIS Static and Dynamic Compression,without code compression: CPU Load: 34% Memory Load: 28M Non-Utilizing Static and Dynamic Compression In IIS,with code compression: CPU Load: 14% Memory Load: 32M 因此,基于我的发现,我同意,在代码中执行此操作时,无需使用IIS压缩.即使内存消耗略高,CPU负载也要低得多,以使代码内压缩更有效地提供文件. 现在,我的全部意义是找出并摆脱IIS覆盖Vary:Accept-Encoding标头.哪个,似乎在启用或不启用IIS压缩时没有效果.标题仍然没有添加…所以,你能帮忙吗? 这是我正在实现的缓存的代码,请注意,在触发包含此代码的方法之前,我通过context.Response.ClearHeaders()清除标头: With context.Response .AddHeader("Cache-Control","store,cache") .AddHeader("Pragma","cache") .AddHeader("Cache-Control","max-age=21600") .AddHeader("ETag",Date.Now.Ticks) .AddHeader("Expires",DateTime.Now.AddYears(1).ToString("ddd,dd MMM yyyy hh:mm:ss") + " GMT") .AddHeader("Vary","Accept-Encoding") .AppendHeader("Vary","Accept-Encoding") .Cache.SetVaryByCustom("Accept-Encoding") .Cache.SetOmitVaryStar(True) .Cache.VaryByParams.IgnoreParams = True .Cache.SetAllowResponseInBrowserHistory(True) .Cache.SetCacheability(Web.HttpCacheability.Public) .Cache.SetValidUntilExpires(True) .Cache.SetLastModified(DateTime.Now.AddYears(-1).ToString("ddd,dd MMM yyyy hh:mm:ss") + " GMT") .CacheControl = "public" ' .Expires = 24 * 60 * 366 .ExpiresAbsolute = DateTime.Now.AddYears(1).ToString("ddd,dd MMM yyyy hh:mm:ss") + " GMT" End With 解决方法
您需要具体了解在代码中应用压缩的MIME类型.然后,您可以禁用这些MIME类型的IIS压缩.
您的.config文件看起来应该与下面的文件大致相同.您将注意到所有列出的MIME类型压缩都已应用.明智地在代码或IIS中关闭MIME类型的压缩,使得代码中压缩的内容不会被IIS压缩,反之亦然. 例如,如果您的HTML全部用代码压缩,您可以指定: <add mimeType="text/html" enabled="false" /> 摘自applicationHosts.config文件: <system.webServer> <httpCompression directory="%SystemDrive%inetpubtempIIS Temporary Compressed Files" dynamicCompressionDisableCpuUsage="90" dynamicCompressionEnableCpuUsage="80" maxDiskSpaceUsage="100" minFileSizeForComp="2700" noCompressionForRange="true" sendCacheHeaders="false" staticCompressionDisableCpuUsage="100" staticCompressionEnableCpuUsage="80" > <scheme name="gzip" dll="%Windir%system32inetsrvgzip.dll" dynamicCompressionLevel=”4” staticCompressionLevel=”7” /> <dynamicTypes> <add mimeType="text/*" enabled="true" /> <add mimeType="message/*" enabled="true" /> <add mimeType="application/javascript" enabled="true" /> <add mimeType="application/json" enabled="true" /> <add mimeType="application/xml" enabled="true" /> <add mimeType="*/*" enabled="false" /> </dynamicTypes> <staticTypes> <add mimeType="text/*" enabled="true" /> <add mimeType="message/*" enabled="true" /> <add mimeType="application/javascript" enabled="true" /> <add mimeType="application/json" enabled="true" /> <add mimeType="application/atom+xml" enabled="true" /> <add mimeType="application/rss+xml" enabled="true" /> <add mimeType="application/xaml+xml" enabled="true" /> <add mimeType="application/xml" enabled="true" /> <add mimeType="image/svg+xml" enabled="true" /> <add mimeType="*/*" enabled="false" /> </staticTypes> </httpCompression> <urlCompression doDynamicCompression="true" dynamicCompressionBeforeCache=”true” /> </system.webServer> 请注意,如果修改applicationHosts.config,它会影响服务器上的所有网站,因此您需要注意,任何不在代码中应用压缩的网站都不会被压缩. 还要注意,通常不应压缩二进制内容(即图像,视频).这些资源已经在各自的容器中压缩(即.JPG,.MP4).确保您没有压缩已压缩的内容类型. 我已经写了更多有关压缩设置的详细信息,您可以在我的答案中查看:https://stackoverflow.com/a/10051876/733805. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc-3 – ASP.NET MVC 3未找到视图“错误”或其主文
- asp.net – 在创建cookie时,如何指定www而不是www cookie?
- asp.net – 在WCF中将对象数组序列化为JSON以符合OpenSearc
- asp.net-membership – 如何在成员资格提供者上实现最佳自定
- asp.net-mvc – 如何重定向HTTP到HTTPS在MVC应用程序(IIS7.
- ASP.NET按钮重定向到另一个页面
- asp.net-mvc – ASP.NET MVC和ViewState
- asp.net – 用于asp超链接的CSS
- 最接近Asp.net mvc3的Java MVC框架?
- 从ASP.NET应用程序直接将文件上传到Amazon S3
- Asp.net错误无法加载文件或程序集
- asp.net-mvc-4 – 使用RabbitMQ从ASP.net MVC 4消
- asp.net – 如果我只是在做一个查找表,我应该使用
- ASP.NET Web API可以在与MVC相同的URL上工作吗?
- asp.net-mvc-3 – 如何通过HTML类(Razor语法)在M
- asp.net – NewRelic – 如何忽略Web应用程序的一
- asp.net-mvc – ASP.NET MVC 4中的Windows身份验
- asp-classic – <%%>和经典asp之间有什么区别?
- asp.net – 对象数据源
- 如何使用Team Build部署ASP.NET Web应用程序?