4

我在一个网站上有一个 Web 应用程序,它需要一段时间(约 10 秒)才能完成页面底部附近的一部分 - 它已尽可能优化,缓存不是一种选择。

我们通过 .htaccess 指令在服务器上启用了压缩SetOutputFilter DEFLATE,问题是这会导致整个页面在开始输出给用户之前一直保持到完成,这不是最佳的,因为用户在页面完成之前什么都看不到。

我也通过phpob_start("ob_gzhandler");方法尝试过。

目前我的<FilesMatch >.htaccess 中有一个限制这个特定脚本被压缩。

基本上我的问题是这个 - 有没有办法说块 gzip 或放气,以便用户得到它的碎片,所以他们可以看到页面已经开始加载?

4

3 回答 3

1

如果您使用该ob_start("ob_gzhandler")方法,则可以这样做 - 您需要查看flushob_flush函数。

一些示例代码 - 尝试使用 curl 加载,或使用 fiddler 检查实际的 http 响应

<?php
ob_start('ob_gzhandler');
print "chunk 1";
ob_flush();
flush();
sleep(2);
print "chunk 2";
ob_end_flush();

不幸的是,浏览器似乎并没有以块的形式显示它——我认为这是因为每个块的数据太小了。您可以通过调用wget -O - -q http://chunktest/chunktest.php您的测试文件来验证此效果。

这里有一些更有用的资源

于 2010-05-25T22:18:58.767 回答
1

我会说:不。我认为现在有 HTTP 提供的方式。

于 2010-05-19T18:14:16.910 回答
0

如果页面的加载时间很长,处理它的创造性方法是使用非常快速的加载页面,并通过 ajax 调用页面上的长时间加载内容。我们对提取详细会员使用统计数据的页面执行此操作……其他网站,例如 Adsense,在其报告页面上执行此操作。

于 2010-05-27T00:56:58.850 回答