Использование слишком много PHP включает в себя плохую идею? - PullRequest
14 голосов
/ 28 августа 2010

Мой вопрос заключается в том, является ли использование множественных PHP include () плохой идеей. Единственная причина, по которой я спрашиваю, состоит в том, что я всегда слышу, что слишком большое количество таблиц стилей или сценариев на сайте создает больше HTTP-запросов и замедляет загрузку страниц. Мне было интересно то же самое с PHP.

Ответы [ 6 ]

29 голосов
/ 28 августа 2010

Подробный ответ:

Каждый CSS или JS-файл, на который есть ссылка на веб-странице, фактически выбирается браузером через сеть, что часто составляет 100 с или более миллисекунд задержки сети.,Запросы к одному и тому же серверу (по соглашению, хотя и не обязательны) сериализуются по одному или двум за раз, поэтому эти задержки складываются.

С другой стороны, все включаемые файлы PHP обрабатываются на самом сервере,Вместо 100 секунд миллисекунд доступ к локальному диску будет составлять 10 секунд миллисекунд или меньше, а в случае кеширования будет прямой доступ к памяти, что еще быстрее.

Если вы используете что-то вроде http://eaccelerator.net/ илиhttp://php.net/manual/en/book.apc.php тогда ваш код PHP будет предварительно скомпилирован на сервере один раз, и даже не имеет значения, включаете ли вы файлы или выгружаете их все в одном месте.

краткий ответ:

Не беспокойтесь об этом.В 99 раз из 100 с этой проблемой преимущества лучшей организации кода перевешивают увеличение производительности.

5 голосов
/ 28 августа 2010

Использование include помогает в организации кода и само по себе не является помехой.Если вы загружаете кучу вещей, которые вам не нужны, это замедлит работу - но это еще одна проблема.Пояснение: когда вы включаете страницы, помните, что вы добавляете в нагрузку;не включайте небрежно ненужные ресурсы.

1 голос
/ 28 августа 2010

Как уже говорилось, использование нескольких PHP-компонентов помогает упорядочить ваш код, так что это неплохая идея.Это станет проблемой, когда используется слишком много включений, потому что веб-сервер должен будет выполнять операции ввода-вывода для каждого включенного включения.

Если у вас большое веб-приложение, вы можете увеличить его, используя ускоритель PHP , который кэширует данные и скомпилированный код из компилятора байт-кода PHP в разделяемой памяти.Если у вас есть много включений PHP в конкретном файле, они будут выполнены только один раз.Дальнейшие вызовы этого файла попадут в кеш, поэтому PHP не требуется.

0 голосов
/ 28 августа 2010

PHP может обнаружить включаемый файл, так как вы можете использовать функцию include_once () вместо include ().

0 голосов
/ 28 августа 2010

Единственная причина, по которой я спрашиваю, состоит в том, что Я всегда слышу, что слишком много таблицы стилей или скрипты на сайте создает больше HTTP-запросов и замедляет загрузка страницы. Мне было интересно то же самое о PHP.

Обратите внимание, что HTTP-запрос на несколько порядков медленнее, чем PHP.

Несколько HTTP-запросов -> Клиент должен запросить и принять по сети несколько файлов
Несколько PHP включают -> Клиент должен запросить и принять только один файл

Включения, очевидно, будут оштрафованы на сервере. Но по твоему вопросу ... не парься. Только с действительно крупными PHP проектами вы столкнетесь с такими проблемами.

0 голосов
/ 28 августа 2010

Это действительно зависит от того, что вы хотите сделать, я имею в виду, если у вас есть кусок кода, который используется постоянно, действительно удобно включать его вместо того, чтобы постоянно копировать и вставлять, и это сделает ваш код болееясно и не медленнее, но если вы включите все функции или классы, которые вы написали в своих файлах, не используя их, конечно, это не очень хорошая практика ... Я бы предложил использовать фреймворк (например, codeigniter или что-то еще, что вы считаете удобным), потому чтоэто действительно помогает прояснить это ... удачи!

...