0

我正在尝试实现此页面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.

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

4

2 回答 2

0

嗯...在雅虎的文档中,flush()是 after</head>和 before <body>

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

在你的代码中,它在里面<body>。您是否尝试将php代码放在它之前?

于 2013-06-14T18:19:35.237 回答
0

嗨,我遇到了同样的情况,它 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();

}
?>  
于 2013-06-14T21:57:15.553 回答