我最近在网站上开始使用gzip,所有浏览器都能正常使用,除了Opera浏览器会报错,提示无法解压缩内容,因为数据损坏。通过测试和搜索得知,这可能是同时使用gzip和分块传输编码的问题。请求像css文件这样的小文件时没有错误,也支持这个方向。
这是已知的问题吗?还是有什么我没有考虑到的问题?
有人还提到这可能与发送Content-Length头部有关。
以下是我代码中最相关部分的简化版本:
$contents = ob_get_contents();
ob_end_clean();
header('Content-Encoding: '.$encoding);
print("\x1f\x8b\x08\x00\x00\x00\x00\x00");
$size = strlen($contents);
$contents = gzcompress($contents, 9);
$contents = substr($contents, 0, $size);
print($contents);
exit();
substr
? - Gumbo