页面何时发送到客户端浏览器


When is the page send to clients browser?

当我用php构建一组元素(比如100)时(在循环中)页面是仅在循环完成时发送到客户端,还是在循环完成之前客户端上的页面已经显示在客户端上?感谢

您可以在PHP代码中随时控制客户端浏览器的输出

示例立即发送到客户端

for($i = 0; $i < 100; $i ++) {
    echo $i, " - sent ";
    sleep(1);
    flush(); // Send to client Instantly 
}

环路后发送示例

ob_start();
for($i = 0; $i < 100; $i ++) {
    echo $i, " - sent ";
    sleep(1);
}
ob_end_flush() // Send after loop

示例3(这将只使用默认的输出缓冲区配置)

for($i = 0; $i < 100; $i ++) {
    echo $i, " - sent ";
    sleep(1);
}

最后(来源:Ninsuo)

有些浏览器在页面完全加载之前不会显示任何内容,因此我们并不总是控制刷新

这取决于如何配置输出缓冲。

你可以在这里看到不同的选项。

我想说,在脚本结束之前,您不能依赖于向用户显示的任何内容。虽然您可以设置PHP的缓冲设置,但这将通过Apache进行,Apache可能会缓冲,也可能不会缓冲,然后到浏览器,浏览器也可能会缓冲。

当用户数据可用时,最安全的方式是在页面加载后通过客户端浏览器的AJAX调用来显示用户数据。