Как я могу сделать сайт, на котором я работаю, быстрее? - PullRequest
2 голосов
/ 17 июля 2011

Я работаю над сайтом, который я «унаследовал» в своей работе, и в настоящее время он использует PHP / HTML / CSS / JS, и для его загрузки требуется AGES, но без PHP он загружается очень быстро. Однако я не очень разбираюсь в PHP, поэтому не знаю точно, где мне его настроить, чтобы он работал быстрее. Сначала в самом верху страницы у меня есть этот код для предварительной загрузки всего:

<?

?>

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

<?
        $count = 0;
        foreach ($domains as $row){
            $count++;
    ?>

между html идет немного (в основном строки таблицы), а затем:

<? 
     } ?>

Так что после примерно 2 дней работы с сайтом я знаю, что мой html / css / js оптимизирован, но php заставляет меня ждать около 5 - 10 секунд для загрузки всего (иногда даже дольше), что, конечно, недопустимо Кто-нибудь, пожалуйста, помогите мне здесь?

EDIT

Я попытался извлечь некоторые соединения снаружи из цикла foreach, но я получаю сообщение об ошибке = /

Ответы [ 2 ]

3 голосов
/ 17 июля 2011

Используйте профилировщик, например xhprof или xdebug + kcachegrind, чтобы найти места вашего кода, которые занимают много времени (или выполняются слишком часто), и оптимизировать их.

1 голос
/ 17 июля 2011

Сначала вы должны прекратить писать запросы в цикле foreach.

Избавиться от запросов, которые используют операторы LIKE.

Затем вам следует перепроверить индексы для заданногостолы.Эмпирическое правило заключается в том, что все строки, которые появляются в предложениях WHERE и GROUP BY, должны быть проиндексированы (ну, есть исключения, но вы должны иметь возможность рассчитывать на основе каждого конкретного случая).

И вы можете избавиться от оператора switch и заменить его поиском по массиву.

.. ну .. мои 2 цента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...