我的网站在 Apache 2.2.24 + PHP 5.3.22 上运行。Apache 与 mod_deflate 一起安装,我的 .htaccess 如下所示:
<ifmodule mod_deflate.c>
AddOutputFilterByType DEFLATE text/text text/html text/plain text/xml text/css application/x-javascript application/javascript text/javascript
</ifmodule>
它有效,文件在发送之前被压缩。我想知道是否有任何方法可以使用分块传输,最好将html页面的头部发送到浏览器。
<html>
<head>
...
</head>
<?php
ob_flush();
flush();
sleep(10);
?>
<body>
...
</body>
</html>
不幸的是,当 DEFLATE 打开时,这不起作用:头部在 10 秒后加载,即当接收到整页时。另一方面,当我尝试从 .htaccess 文件中删除选项以关闭 DEFLATE 时,会在调用 sleep() 函数之前发送头部。
使用最新的 Apache 和 PHP 版本,有没有办法让 mod_deflate 和分块传输一起工作?根据http://www.phpied.com/progressive-rendering-via-multiple-flushes/应该是,但作为一篇旧文章,我想在浪费时间之前听听您的想法。