Сколько PHP включает слишком много?
Каждая страница моего сайта отображается с помощью PHP.
Каждый файл PHP использует около 10 включений. Поэтому для каждой отображаемой страницы серверу необходимо получить 10 файлов в дополнение к остальным функциям (MySQL и т.д.).
Должен ли я объединить их в один файл include? Будет ли это иметь ЛЮБОЕ отличие от реальной скорости? Это не тривиальная задача, так как были бы спагетти переменной scope для сортировки.
Ответы
Ответ 1
Включить файлы обрабатываются на сервере, поэтому они не "загружаются" браузером. Разница в производительности при использовании, включая копирование и вставку кода или консолидации файлов, настолько ничтожна (и я предполагаю, что мы говорим об этом в диапазоне от 10 до 100 мкс в абсолютном большинстве), что это нет "Это вообще стоит того.
Не стесняйтесь include
и require
к вашему сердечному содержимому. Чистый код существенно более важен, чем бритье менее 100 мкс при загрузке страницы. Если вы строите что-то там, где время критическое, вы все равно не должны использовать PHP.
Ответ 2
Требуется время, чтобы выяснить, где находятся файлы на пути включения. Если у вас есть несколько мест в вашем пути include, PHP будет искать каждое местоположение, пока он не найдет файл или не сработает (в этом случае он выдает ошибку). Вот почему вы должны поместить путь include, где большинство включенных файлов нужно найти поверх включенного пути.
Если вы используете абсолютные пути в вашем пути включения, PHP будет кэшировать путь в кэше realpath, но обратите внимание, что это очень быстро устаревает. Так что да, в том числе десять файлов потенциально медленнее, чем один большой файл, просто потому, что PHP чаще проверяет путь включения. Однако, если ваш веб-сервер не является действительно слабой машиной, десяти файлов недостаточно, чтобы сделать это. Это становится интересным, если включать сотни файлов или иметь много мест для поиска, и в этом случае вы должны использовать кеш OpCode в любом случае.
Также обратите внимание, что при включении файлов не рекомендуется включать каждый файл в начале, потому что вы можете включать файлы, которые никогда не вызывают ваше приложение для конкретного запроса.
Ссылка
Ответ 3
Несмотря на то, что операции ввода-вывода на дисках между крупнейшими производителями производительности, обычный сайт не замечает сколько-нибудь разумного количества включений.
Прежде чем вы столкнетесь с любыми проблемами с включением, у вас, вероятно, уже будет некоторый кеш-код операции, который также устранит эту проблему.
Ответ 4
include\ and
требует `только открытого файла на стороне сервера, но это может быть временем, в зависимости от оборудования/файловой системы и т.д.
В любом случае, если вы можете, используйте autoloader
. Будут загружены только нужные файлы.
Тогда, если вы считаете, что включенные файлы являются источником замедления (и я думаю, что есть еще много других моментов для поиска улучшений раньше), вы можете попытаться автоматически объединить файлы. У вас по-прежнему есть один файл для каждого класса при разработке, но вы можете создать файл, содержащий определение каждого класса, только один include
(что-то вроде cat <all your included file>.php > to_include.php
).