我在网站上有一个Web应用程序需要一段时间(约10秒)才能完成靠近底部的部分页面 - 它已经尽可能优化,并且缓存不是一种选择。
我们已经通过.htaccess指令SetOutputFilter DEFLATE
在服务器上启用了压缩,问题是导致整个页面在开始输出给用户之前一直保持到完全,这不是最佳的,因为用户什么都看不见直到页面完成。
我也通过php ob_start("ob_gzhandler");
方法尝试过它。
目前我的.htaccess中有<FilesMatch >
限制此特定脚本被压缩。
基本上我的问题是这样的 - 有没有办法说chunk gzip或deflate让用户把它分成几部分,这样他们就可以看到页面已经开始加载了?
答案 0 :(得分:1)
我会说:不。我认为现在有HTTP提供的方式。
答案 1 :(得分:1)
如果您使用ob_start("ob_gzhandler")
方法,则可以执行此操作 - 您需要查看flush和ob_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
来验证此效果。
还有一些更有用的资源here
答案 2 :(得分:0)
如果页面的加载时间很长,那么处理它的创造性方法就是使用一个非常快速的加载页面,并在页面上对该长载内容进行ajax调用。我们对提取详细成员使用情况统计信息的网页执行此操作...其他网站(例如Adsense)会在其报告页面上执行此操作。