gpt4 book ai didi

asp.net - IIS 应用程序在响应 header 中缺少内容编码 - gzip

转载 作者:行者123 更新时间:2023-12-02 16:40:14 27 4
gpt4 key购买 nike

在 Firebug 中,请求 header 具有以下条目:
接受编码:gzip、deflate

但是没有:
内容编码:gzip
在响应 header 中。

无论我尝试过什么,按照SO和其他网站上的一些答案,似乎没有任何效果!静态文件和动态文件都没有被压缩,或者至少如果它们被压缩,则响应 header 中没有返回内容编码 - gzip 值。

这是我的 web.config 设置的示例:

<urlCompression doDynamicCompression="true" doStaticCompression="true" dynamicCompressionBeforeCache="true" />
<httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files" minFileSizeForComp="150" staticCompressionIgnoreHitFrequency="true">
<remove name="gzip" />
<scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" staticCompressionLevel="8" dynamicCompressionLevel="8" />
</httpCompression>

我忽略了点击频率
staticCompressionIgnoreHitFrequency="true"

我已经确认 IIS 实际上正在压缩我可以在以下位置看到的文件:
C:\inetpub\temp\IIS临时压缩文件

如此处指定:set up gzip in IIS 8 windows 8
我已确保在 Windows 功能 > Internet 信息服务 > WWW 服务 > 性能功能中启用静态和动态压缩

我也尝试过这个人的方法:
IIS 7.5 Compression creates compressed file but returns the non-compressed one

<小时/>

编辑1:
IIS版本是10,但我也在IIS 8.5上尝试过这个

<小时/>

编辑2:
我现在还尝试了在此链接中找到的各种配置文件: https://github.com/h5bp/server-configs-iis/它提供了一些看起来像“最佳实践”的 web.config 文件。
未解决

<小时/>

编辑3:
根据 @Nkosi 的输入,我创建了一个全新的 Asp.net MVC 应用程序,并使用我尝试过的所有这些选项对其进行配置。这是我从 Fiddler 获得的原始 header :

HTTP/1.1 200 OK
Transfer-Encoding: chunked
Content-Type: text/javascript; charset=UTF-8
Expires: Wed, 20 Jul 2016 18:22:47 GMT
Last-Modified: Wed, 20 Jul 2016 18:22:47 GMT
Server: Microsoft-HTTPAPI/2.0
Date: Wed, 20 Jul 2016 18:22:47 GMT

如您所见,没有内容编码:Gzip
未解决

<小时/>

编辑4:
我尝试过将代码添加到 Global.asax 部分中的 BeginRequest 事件的方法:https://stackoverflow.com/a/27185575/392591
未解决

<小时/>

编辑5:
所以我只是尝试根据以下答案启用跟踪:https://stackoverflow.com/a/33182525/392591
没有失败,但我确实注意到跟踪文件的底部有一个名为 GENERAL_RESPONSE_HEADERS 的部分,以下是它提供的内容:

Cache-Control: private
Content-Type: text/html; charset=utf-8
Content-Encoding: gzip
Server: Microsoft-IIS/10.0
X-AspNetMvc-Version: 5.2
X-AspNet-Version: 4.0.30319
X-Powered-By: My Little Pony
X-UA-Compatible: IE=Edge,chrome=1

这适用于每个静态类型文件。
但是我刚刚在跟踪文件中发现了以下内容:

8. STATIC_COMPRESSION_START  08:04:03.552 
9. STATIC_COMPRESSION_NOT_SUCCESS Reason="NOT_FREQUENTLY_HIT" 08:04:03.552
10. STATIC_COMPRESSION_END 08:04:03.552

压缩未成功,原因是不频繁命中...奇怪,因为我确实将“忽略命中频率”选项设置为 true!

因此,我刚刚进入 IIS 管理器,并在服务器上将“忽略命中频率”设置为 true(即 applicationHost.config),并将跟踪文件输出更改为以下内容:

8. STATIC_COMPRESSION_START  08:19:17.489 
9. STATIC_COMPRESSION_SUCCESS 08:19:17.489
10. STATIC_COMPRESSION_END 08:19:17.489

我返回并在 applicationHost.config 中将其关闭,然后又返回到静态压缩不成功,所以这肯定会产生影响。但是,当我查看 FireBug 时,它仍然传递未压缩的文件,并且没有 GZIP 内容编码响应 header 。

我在失败请求跟踪中注意到的另一个有趣的地方是最后两个整体 GENERAL_FLUSH_RESPONSE_END 和 GENERAL_REQUEST_END,它们都显示我的 Bootstrap.css 文件已发送 17903 字节(大约 18kb),与我在我的文件中看到的文件的压缩版本相匹配。 IIS 临时压缩文件文件夹。因此,该文件在物理上被压缩,并且根据失败的请求跟踪,它正在发送正确的内容...但随后浏览器会拾取完整的 117kb 文件?
未解决

<小时/>

最佳答案

我的 IIS 和 gzip 配置也有类似的情况

In Firebug the request header has the following entry: Accept-Encoding: gzip, deflate

But there's no: Content-Encoding: gzip In the Response Header.

就我而言,问题出在防病毒保护上。实际上应用了gzipping,但是启用了防病毒设置保护http连接(取决于具体程序),解压缩响应检查它,然后动态重写响应 header 。

注意:当某些代理/防病毒软件更改您的响应 header 时,这是一个关键属性,当 Content-Length 消失时Transfer-Encoding 添加了值 chunked

关于asp.net - IIS 应用程序在响应 header 中缺少内容编码 - gzip,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38250376/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com