Включая ненужные php файлы замедлит веб-сайт?

Вопрос мог бы предложить некоторым людям говорить категорическое ДА или НЕ почти сразу, но продолжал читать...

У меня есть простой веб-сайт, где существует 30 php страниц (у каждого есть некоторый php серверный код + HTML/CSS и т.д....). Никакая сложная иерархия, ничто. Всего 30 страниц.

У меня также есть ряд просто бэкенда php файлы - те, которые имеют код для сохранения материала к базе данных, делая аутентификацию, посылая электронные письма, обрабатывая заказы и т.п.. Они будут снова использованы на те 30 довольных страниц.

У меня есть основной php файл, в который я отправляю параметр. Это указывает, какой из тех 30 файлов необходим, и он включает соответствующую довольную страницу. Но каждый из тех может потребовать, чтобы было включено переменное количество файлов бэкенда. Например, одна страница содержания ничего не может потребовать от бэкенда, в то время как другому, возможно, понадобился бы код базы данных, в то время как чему-то еще, возможно, понадобились бы подписчик электронной почты, база данных и код аутентификации и т.д...

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

Будучи ленивым, я включал ВСЕ файлы бэкенда inthe основной файл так, чтобы никакая страница содержания не могла запросить что-то, что не включено.

Первый вопрос - действительно ли это - хорошая практика? если это сделано кем-либо вообще.

Во-вторых, будет проблема производительности или какой-либо вид проблемы из-за меня включая все файлы бэкенда независимо от того, необходимы ли они?

Править

Веб-сайт добирается где угодно между 3000 - 4000 посещениями в день.

8
задан AstroCB 17 February 2015 в 03:48
поделиться

9 ответов

Вы должны выполнить тест. Время выполнения одной и той же страницы с разными включениями. Но, думаю, с 30 файлами особой разницы не будет.

Но вы можете сэкономить время и просто включите APC в php.ini (это расширение PECL, поэтому вам нужно установить его). Он будет кэшировать проанализированное содержимое ваших файлов, что значительно ускорит процесс.

Кстати: в лени нет ничего плохого, это даже добродетель ;)

7
ответ дан 5 December 2019 в 15:23
поделиться

Как говорили другие, это не должно сильно замедлять работу, но это не «идеально» '.

Если основная проблема в том, что вам лень менять пути для всех включенных файлов (если путь когда-либо потребуется обновить в будущем). Затем вы можете использовать константу для определения пути в вашем основном файле и использовать константу в любое время, когда вам нужно включить / потребовать файл.

define('PATH_TO_FILES', '/var/www/html/mysite/includes/go/in/here/');

require_once PATH_TO_FILES.'database.php';
require_once PATH_TO_FILES.'sessions.php';
require_once PATH_TO_FILES.'otherstuff.php';

Таким образом, если путь изменится, вам нужно будет изменить только одну строку кода.

0
ответ дан 5 December 2019 в 15:23
поделиться

Это замедлит работу вашего сайта, хотя, вероятно, и не на заметную величину. Однако, это не кажется здоровым способом организации вашего приложения; я бы переосмыслил его. Попробуйте отделить логику приложения (например, большую часть кода на стороне сервера) от уровня представления (например, HTML/CSS).

1
ответ дан 5 December 2019 в 15:23
поделиться

Если ваш сайт объектно-ориентированный, я бы рекомендовал использовать автоматическую загрузку ( http://php.net/manual/en/language .oop5.autoload.php ).

Здесь используется магический метод (__autoload) для поиска класса, когда это необходимо (он ленив, как и вы!), Поэтому, если конкретной странице не нужны все классы, ей не нужно их получать!

Опять же, это зависит от того, объектно-ориентированный он или нет ...

4
ответ дан 5 December 2019 в 15:23
поделиться

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

1
ответ дан 5 December 2019 в 15:23
поделиться

Вы можете перенести некоторые недостатки компиляции кода PHP, используя XCache . Этот модуль PHP будет кэшировать код операции PHP, что сокращает время компиляции и производительность.

0
ответ дан 5 December 2019 в 15:23
поделиться

Учитывая размер вашего веб-сайта: если вы не заметили замедления, зачем пытаться его исправить?

Когда дело касается больших сайтов, первое, что вам следует сделать, это установить APC.Несмотря на то, что ваш текущий метод включения файлов может не получить от APC столько преимуществ, сколько мог бы, APC все равно будет замечательно ускорить работу.

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

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

Расмус Лердорф (человек, стоящий за PHP) соглашается: http://pooteeweet.org/blog/538

0
ответ дан 5 December 2019 в 15:23
поделиться

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

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

-1
ответ дан 5 December 2019 в 15:23
поделиться

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

-1
ответ дан 5 December 2019 в 15:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: