Я имел дело с огромным TTFB (8-10 секунд) и отчаянно искал решение. После безуспешного поиска и поиска я решил поближе взглянуть на мой код PHP и индексы базы данных .
Решение для буферизации вывода немного понизит мой TTFB, но этого недостаточно. У меня снова были жалобы пользователей.
Настоящая проблема заключается в времени обработки сервера (запросы БД и циклы PHP) и в исходном коде HTML, который вы создали .
Теперь я предлагаю предпринять следующие шаги:
- Посмотрите на индексы базы данных. Убедитесь, что вы используете правильные индексы для " все данные ", которые вы возвращаете . Используйте Объясните , чтобы проверить, используется ли ваш индекс, какой используется и как он используется.
В моем случае я возвращаю массив объектов и проверяю свои индексы для моей основной таблицы. Все выглядело нормально, но я забыл, что мои объекты включают другие меньшие объекты из других таблиц. Эти таблицы не были правильно проиндексированы. Отсюда мой огромный TTFB. Я просто передаю от 8 секунд до 2 секунд, просто добавляя правильный индекс в правильные таблицы.
- Взгляните на свой PHP-код.
Возможно, у вас есть цикл в цикле , который может быть медленным для обработки. Вы должны использовать PHP MVC Framework. Твой выбор. Я не назову ни одного.
Избегайте такого кода, даже если он работает. Я знаю, некоторые программисты PHP4 скажут, что это хорошо. :)
$query = "SELECT something FROM table";
$result = mysqli_query($mysqli, $query);
if($result) {
while($row = mysqli_fetch_assoc($result)) {
$query = "UPDATE other_table SET something_else = "'.$row['something'].'";
$result2 = mysqli_query($mysqli, $query)
}
}
- Обратите внимание на сгенерированный HTML-код .
Например, вы генерируете код Javascript через циклы PHP . Логика в порядке. Время загрузки нет. Допустим, вы возвращаете 100 строк в таблицу. Для каждой строки у вас есть только 5 возможных действий (изменение статуса, редактирование, удаление, дублирование, печать). Это означает, что 5 диалогов jQuery (HTML div, с элементами управления) и 5 JS-скриптов умножаются на 100 строк = тысячи строк кода, которые будут написаны на этой странице.
В моем случае более 32 000 строк в моем HTML-коде размером 4 МБ. Прошло от 2 до 1 секунды после того, как я установил все эти диалоги на соответствующие функции JS.
В заключение , (если вы все еще читаете это :)) не ищите некоторые магические функции, чтобы уменьшить ваш TTFB. Поиск вашего кода и базы данных.
PS: некоторые другие вещи помогут увеличить скорость: кэширование и сжатие в браузере, использование CDN, минимизация HTML, CSS и JS, откладывание анализа JavaScript, объединение изображений в CSS-спрайты и т. Д.
Используйте скорость страницы Google и аудиты Google для получения дополнительной информации о производительности.