IIS 动态压缩无效或发生NO_ACCEPT_ENCODING的解决方法

首先检查IIS有没有安装动态压缩功能,如果没有则安装之。

然后配置IIS,操作步骤如下:

  1. 在Internet 信息服务(IIS)管理器中左侧目录中选择顶部节点,在右侧的功能视图中双击配置编辑器。
  2. 在配置编辑器界面,选择 system.webServer/httpCompression 节,在下方列表中点击 dynamicTypes 属性右侧的 ... 按钮。
  3. 在集合编辑器界面,点击添加按钮。在左侧下方的编辑界面,enabled 属性设置为 True,mimeType 属性设置为 application/msbin1(这是我们项目中用到的)。

设置完成后,动态压缩即可启用。

如果不成功,可以按如下步骤排查:

  1. 看看请求中有没有Accept-Encoding:gzip, deflate。(建议用Fiddler进行跟踪,不要用IE的开发人员工具,因为我发现IE的开发人员工具对Gzip压过后的文件进行了解压,并且将Headers中Content-Encoding: gzip去掉了)。
  2. 配置编辑器中system.webServer/httpCompression节,下方dicretory的目录IIS用户组有没有访问权限。
  3. 会不会由于CPU使用率过高引起的,这里要说明下dynamicCompressionEnableCpuUsage是指CPU达到上限后,恢复到百分之多少以下才再次启动压缩。
  4. 请求的资源类型有没有加入到dynamicTypes中。
  5. 会不会是测试的方法返回数据太小,可以适当调低minFileForComp。
  6. 直接到服务器上测试,这样可以不经过过路由,如果发现还不行,则需要将 跟踪 安装上,然后在IIS顶层编辑  失败请求跟踪规则 ,一般是添加→所有规则→状态代码(200)。然后到相关网站节点,启动 失败请求跟踪规则,运行测试,然后可以看到C:\inetpub\logs\FailedReqLogFiles\W3SVC1下生成一批跟踪文件。
    • 双击跟踪文件,找到相关的请求,直接看Compact view ,找到GENERAL_REQUEST_HEADERS,看看有没有收到Accept-Encoding:gzip, deflate,如果没有,则说明被防火墙过滤掉了,这需要找网管了。
    • 如果有,则往下找到DYNAMIC_COMPRESSION_NOT_SUCCESS,里面会有没有进行压缩的原因。
希望以上步能解决问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值