正如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。
答案 0 :(得分:2)
您误解了“预加载”的想法
在这里阅读:https://developer.mozilla.org/en-US/docs/Web/HTML/Preloading_content
使用PHP生成网页时,只有在整个页面生成后,您才能看到任何内容。
如果使用flush()强制将缓冲区写入“输出”,则可能需要先阅读手册。
https://www.php.net/manual/en/function.flush.php
无论如何,使用“预加载”的最佳位置是在另一页上需要资源,可能是在当前页面上加载。