我在HTTP-Header:ContentEncoding中有一些严重的(或者更好地说是:奇怪的)问题。
在将内容发送到客户端浏览器之前,我想将其压缩。为此,我正在检查客户端浏览器是否接受gzip,如果接受,则使用ob_start("ob_gzhandler")并设置内容编码:
$response->addHeader("Content-Encoding", "gzip");
我认为我的问题是内容编码头的手动设置。如果我用$response->addHeader("Content-Encoding", "gzip");
那么内容仅在Opera中显示。
如果我用 $response->addHeader("Content-Encoding", "'gzip'");
th所有浏览器显示的内容都是正确的,但是gzip压缩检查表明它没有被压缩,W3C HTML验证服务无法对页面进行编码:
如果我不在线使用The error was: Don't know how to decode Content-Encoding ''gzip''
ob_start("ob_gzhandler")
那么该页只能在Opera-我的完整代码行中显示。
在浏览器中进行正确的输出,如下所示:
$accEncoding = $request->getHeader("http_accept_encoding");
if($accEncoding !== NULL && substr_count($accEncoding, 'gzip')) {
ob_start("ob_gzhandler");
$response->addHeader("Content-Encoding", "'gzip'");
$response->addHeader("Vary", "Accept-Encoding");
} else {
ob_start();
}
我是使用了ob_gz处理程序错误,还是在这里做了其他错误?对于如何正确处理gzip输出,我感到非常困惑。