Буферизация вывода на PHP
Не секрет что буферизация вывода в PHP по умолчанию включена. В более ранних версиях PHP строка с данными отправлялась в браузер каждый раз когда интерпретатор обрабатывал оператор echo или текст вне php кода.
Буферизация вывода делает процесс загрузки страницы более быстрым и эффективным. Буфер это по существу участок памяти для хранения одной большой строки. Когда текст подается на выход, он складывается в буфер, вместо немедленной отдачи в браузер.
Затем данные из буфера отдаются в браузер и буфер очищается. Это происходит в следующих случаях:
- PHP интерпретатор достиг конца файла скрипта.
- Буфер заполнился до максимального значения, установленного настройках буферизации вывода в PHP.
- Был произведен вызов функций flush() или ob_flush().
Для того чтобы быть полностью уверенным что буфер работает стабильно, перед буферизацией страницы рекомендуется очищать буфер. Это делается так:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Пример очистки буфера</title>
<link rel="stylesheet" type="text/css" href="styles.css" />
<link rel="shortcut icon" href="favicon.ico" />
</head>
<?php
// очистка буфера
flush();
?>
<body>
</html>
Как только браузер получил html заголовок, он начинает загрузку файлов css, favicon.ico и т.д. Эта загрузка будет происходить в момент когда браузер будет получать основной body контент.
Увеличение скорости загрузки страницы будет зависеть от серверной обработки скриптов, веса вашей страницы, количества и размера ваших css файлов, а также возможностью кеширования расурсов браузером. Однако, это настолько простая оптимизация, что существует мало причин не делать ее. В большинстве случаев этот способ даст положительные результаты.