link rel = "preload" с PHP и Apache - PullRequest
0 голосов
/ 09 мая 2019

Как описано здесь , было бы неплохо предварительно загрузить скрипты и 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>

Что происходит, так это то, что веб-сервер удерживает содержимое до тех пор, пока не будет обработан скрипт WHOLE, что означает, что html-код отправляется только через 2 секунды ожидания, что делает предварительные операторы бесполезными.

Я пытался добавить flush(); перед оператором сна, но безрезультатно.

Есть идеи, как использовать предварительную загрузку с PHP-генерируемыми страницами? Я использую PHP 7.x и Apache 2.4.

1 Ответ

2 голосов
/ 09 мая 2019

Вы неправильно поняли идею "предварительной загрузки"

Читайте здесь: https://developer.mozilla.org/en-US/docs/Web/HTML/Preloading_content

Когда веб-страница генерируется с помощью PHP, вы не увидите никакого контента, пока вся страница не будетсгенерировано.

Если вы заставляете буферы записывать в «OUTPUT», используя flush (), вы можете сначала прочитать руководство.

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

В любом случаеЛучшее место для использования «предварительной загрузки» - ресурсы, необходимые для другой страницы, возможно, для загрузки текущей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...