我已经检查过很多关于这个的问题(在IIS上进行gzip压缩),但没有一个回答我的问题。服务器请求跟踪清楚地显示正在返回以下标头(通过失败的请求跟踪):
Cache-Control: max-age=604800
Content-Type: text/css
Content-Encoding: gzip
Last-Modified: Fri, 20 May 2016 16:21:42 GMT
Accept-Ranges: bytes
ETag: "02fa9b1b3b2d11:0"
Vary: Accept-Encoding
Server: Microsoft-IIS/7.5
X-Powered-By: ASP.NET
但客户收到以下内容:
Accept-Ranges: bytes
Cache-Control: max-age=604800
Content-Type: text/css
Date: Mon, 23 May 2016 08:39:03 GMT
ETag: "02fa9b1b3b2d11:0"
Last-Modified: Fri, 20 May 2016 16:21:42 GMT
Server: Microsoft-IIS/7.5
Transfer-Encoding: chunked
Vary: Accept-Encoding
X-Powered-By: ASP.NET
无论我多少次请求它,它都会得到它。
现在,当我使用LivePage插件时会发生一些有趣的事情(如果有更改,它会不断请求资源更新它们)。在该插件的一些请求之后,响应被gzip压缩(它将?livepage=[timestamp]
附加到url)。我已将frequentHitThreshold
设置为1
,将frequentHitTimePeriod
设置为00:10:10
。如果我邮递员手动垃圾邮件请求,服务器永远不会返回压缩邮件。屏幕截图是当livepage请求资源
我认真对待所有想法。任何帮助将不胜感激。
编辑我刚注意到livePage
发送了HEAD
个请求。并且该类型的请求始终返回压缩资源,但GET
方法不返回。
编辑2 如果我从Accept-Language
请求中移除了User-Agent
和GET
,那也将有效。是否有任何IIS大师为这种行为提供解释?
编辑3 请求不起作用的标头(GET
):
Accept: text/css,*/*;q=0.1 */ <- added the last asterisk slash to keep syntax highlightitng, it's not part of the header
Accept-Encoding: gzip, deflate, sdch
Accept-Language: en-GB,en-US;q=0.8,en;q=0.6
Cache-Control: no-cache
Connection: keep-alive
Cookie: .ASPXAUTH=3FB30D0AE9CAFCD5CA54A9A73ED43EB7143B3AB5B35C3BEBC6623C2E6853977BE74BB11E688950BCC07DD2C99A1B3F77B63B2258C4A9E0B59A5C4DD67E88B9F96C419D5CB4EBE3620779FC7D8C07E174A94E4A5F4A6923A0DCF740B505F6B0740C13F8E0E19C6A9BA8C598157A527EA8; Orchrd-=%7B%22Exp-N42-Settings%22%3A%22open%22%7D; _ga=GA1.2.1237431644.1463664397
Host: mysite.local
Pragma: no-cache
Referer: http://mysite.local/
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36
如果相同的请求标头作为HEAD
请求发送,它将起作用并返回压缩文件(它还会将其记录在Trace中)。有趣的是,如果这些请求标头是没有 User-Agent
和Accept-Language
发送的,那么它也会工作并返回压缩文件(但它不会记录在跟踪中)