【问题标题】:Flushing HTML to Browser using PHP使用 PHP 将 HTML 刷新到浏览器
【发布时间】:2013-06-14 18:08:11
【问题描述】:

我正在尝试实现此页面上列出的技巧http://developer.yahoo.com/performance/rules.html#flush“尽早刷新缓冲区”。

每次我尝试运行这个东西时,我都没有得到想要的输出。

我已经编写了以下代码。

<html>
<head>
    <title>This is title</title>
    <script type="text/javascript" src="/1.js"></script>
    <link rel="stylesheet" type="text/css" href="/1.css">
</head>

<body>
ABC
<?php
flush();
sleep(3);
?>
</body>
</html>

结果

我在 Firefox 和 Chrome 上都得到了相同的结果。

我希望 CSS 和 JS 文件的下载应该立即开始,而不是等待 3 秒。

根据互联网上提供的信息,我尝试了以下方法,但没有任何帮助。

1. ob_start(); and then ob_flush();

2. Using both ob_flush(); and flush(); ( in both the orders )

3. Adding the thing like this
@apache_setenv('no-gzip', 1);
@ini_set('zlib.output_compression', 0);
@ini_set('implicit_flush', 1);

4. Putting more content in body 4~5 KB of content before flush.

5. And many other things.

我怀疑是否真的可以实现这种事情。

【问题讨论】:

  • 你的意思是说我不应该这样做?按照帖子的最高答案。我想告诉你,我不会做 G-Zip,我只会合并和缩小 CSS 和 JS 文件。此外,在我的情况下,完成整个 PHP 脚本通常需要 2-2.5 秒 + 还会出现大量图像。这样做意味着少了 2 个 HTTP 请求。另外,我不会经常冲洗,我打算在&lt;/head&gt; 之后冲洗一次,在&lt;/html&gt; 之后冲洗一次
  • 你在另一个像 nginx 这样的 http 服务器后面吗?这个问题可能是相关的:PHP Flush that works… even in Nginx
  • @Lepidosteus.. 不,我只是在使用 Apache。
  • 我现在遇到了同样的问题,@Manu,你找到解决方案了吗?这与我面临的问题非常相似!

标签: php performance flush buffering output-buffering


【解决方案1】:

嗯...在 yahoo 的文档中,flush()&lt;/head&gt; 之后和 &lt;body&gt; 之前。

  ... <!-- css, js -->
</head>
<?php flush(); ?>
<body>
  ... <!-- content -->

在您的代码中,它位于 &lt;body&gt; 内。你试过把php代码放在前面吗?

【讨论】:

    【解决方案2】:

    您好,我遇到了同样的情况,ob_start 和 ob_flush 本身对我也不起作用。

    所以在编辑代码后它工作了 编辑::

    <?php 
    if (ob_get_level() == 0) ob_start();
    for($i = 0 ; $i < 10 ; $i++){
    
    echo $i . '<br>';
    sleep(1);
        echo str_pad('',4096) ;   
        ob_flush();
        flush();
    
    }
    ?>  
    

    【讨论】:

    • 这只是我的数组,所以你可以使用你的变量。还有循环,因为你需要在每一秒内显示一些东西。所以可以摆脱循环,但您需要保留其他所有内容。
    • 这无济于事。 :( 我放了一个循环,我放了 sleep(1).. 循环运行了 7 次。css,js 文件的加载仅在 3 秒后开始。虽然等待 7 秒更好。但仍然为什么延迟3 秒。实际上我的脚本可能不会运行超过 2-3 秒。
    • 我编辑了我的代码。它正在工作,但您需要修改睡眠量和循环结构。
    • 我已经执行了与您编写的代码相同的代码。在 head 部分中精确复制粘贴 + 1 个 css 和 1 个 js 文件。它工作正常。 1,2,3,4,5.. 每秒打印一次。但我的问题是为什么在第一次刷新后不开始下载 CSS 和 JS 文件?下载仅在 3 秒后开始。 :( Firefox 和 Chrome 都试过了。
    猜你喜欢
    • 1970-01-01
    • 2020-09-26
    • 2010-10-02
    • 2016-04-01
    • 2021-06-18
    • 2014-08-10
    • 1970-01-01
    • 2016-08-19
    • 2014-12-22
    相关资源
    最近更新 更多