用PHP和Apache链接rel =“ preload”

时间:2019-05-09 10:07:57

标签: php html apache

正如here所述,最好预先加载脚本和CSS以加快网页加载速度。

我的网页基于PHP,所以我做到了:

<!DOCTYPE html>
<html lang="en">
<head>
    <link rel="preload" href="/styles.css" as="style" />
    <link rel="preload" href="/script.js" as="script" />
<?php
   flush();  // Please, output the code above!
   sleep(2); // Simulate some processing
?>
<link rel="stylesheet" type="text/css" href="/styles.css" />
</head>
<body>Test
<script src="/scripts.js"></script>
</body>
</html>

发生的事情是,Web服务器将保留内容,直到处理整个脚本为止,这意味着html代码仅在等待2秒钟后才发送,这使得预加载语句无用。

我试图在睡眠语句之前添加flush();,但没有效果。

有什么主意如何对PHP生成的页面使用预加载?我正在使用PHP 7.x和Apache 2.4。

1 个答案:

答案 0 :(得分:2)

您误解了“预加载”的想法

在这里阅读:https://developer.mozilla.org/en-US/docs/Web/HTML/Preloading_content

使用PHP生成网页时,只有在整个页面生成后,您才能看到任何内容。

如果使用flush()强制将缓冲区写入“输出”,则可能需要先阅读手册。

https://www.php.net/manual/en/function.flush.php

无论如何,使用“预加载”的最佳位置是在另一页上需要资源,可能是在当前页面上加载。