0
4

1 回答 1

0

当内容编码出现问题时会发生这种情况,这通常取决于压缩设置。

通常,要么Content-Encoding标头无效或丢失,要么标头无效Vary。我不知道 W3TC,但是快速搜索“W3TC 内容编码错误”带来了一些结果,所以幸运的是这个问题发生在少数人身上

Apache 默认压缩设置

同样,我不知道 W3TC,但是通过实现类似的缓存设置,它第一次看到对尚未缓存的文件的请求时,它会构建一个 .html 文件,用 gzip 之类的东西压缩它,然后将其保存为.html.gz文件。每当第二个请求进来时,Apache 就可以直接按原样提供该静态文件(知道由于文件扩展名它已经被压缩)。

出现此问题是因为它随后将 gzip 数据输出给第一个请求者。默认情况下,Apache 会压缩响应(除非它知道不这样做),因此结果是它被压缩了两次。

因此,可能的选择:

  • 通过在您的网站上禁用来关闭 Apache 的默认压缩设置mod_deflate(假设您的所有请求都通过 W3TC,这可能是 W3TC 期望的路线)
  • 编辑 W3TC 或您的网站,添加类似apache_setenv('no-gzip', '1');的内容,其效果与上述相同,但更易于控制适用于哪些请求
  • 关闭 W3TC 的压缩(不过我不会这样做;认为这是最后的手段!)
于 2017-02-02T03:52:03.493 回答