На время проведения реконструкции сайт переведён в режим "ТОЛЬКО ЧТЕНИЕ" (Read only). Приносим свои извинения!
MaxHub
Полезности по Maxsite CMS

Как уменьшить время загрузки страницы? Не количество запросов к БД

Вопросы-ответы / 25 мая 2016

Ситуация такая, что обычный PHP-скрипт вот так грузит сервер (картинка). Причем опытным путем выяснилось, что время загрузки страницы не сильно уменьшается при включении $db['default']['cache_on'] = TRUE;

Раз скрипт работает, не выдает ошибок, значит нет зацикливаний и тд, я правильно понимаю?

В какую сторону копать? Такое время загрузки ощутимо заметно.

Комментариев: 5
  1. Во-первых, при любом кешировании первоначальная загрузка страницы будет долгой. Тут скорее речь о том, чтобы страдал только "первопроходец", а у остальных посетителей всё будет летать.

    Во-вторых, как раз таки количество запросов БД и является основной причиной такого большого времени формирования страницы.

    Отсюда рекомендация: освоить стандартные функции кеширования (mso_get_cache и mso_add_cache - в недрах дефолтного шаблона много примеров их использования в паре) включить плагин sm_profiler (в нём есть информация по времени исполнения каждого запроса) и постепенно, запрос за запросом, настроить кеширование всех "тяжёлых" запросов в рамках вашего шаблона.

  2. Илья, Спасибо за рекомендации!

    при любом кешировании первоначальная загрузка страницы будет долгой

    Да, я ориентировалась не на первую загрузку страницы при включении кэширования, а на последующие. При последующих загрузках в информации указывается, что используется 0 запросов к БД, то есть вообще нет запросов. При этом время загрузки страницы не опускается ниже 1,5с. Я правильно понимаю, что mso_get_cache и mso_add_cache мне не помогут в этом случае?

    А циклы foreach могут влиять на время исполнения скрипта? Например, если на странице 10 циклов и каждый по 1000 обходов, это много?

    P.S. при отправке этого вопроса на МаксХабе в информации было указано больше 80 запросов SQL и ооочень маленькое время загрузки.

  3. А циклы foreach могут влиять на время исполнения скрипта? Например, если на странице 10 циклов и каждый по 1000 обходов, это много?

    Конечно могут и скорее всего влияют.

    при отправке этого вопроса на МаксХабе в информации было указано больше 80 запросов SQL и ооочень маленькое время загрузки.

    Помимо SQL запросов на время также может влиять доступные сайту вычислительные мощности сервера. Так, на обычных (shared) хостингах ваш сайт может делить сервер с сотнями сайтов и ему фактически будет доставаться очень мало процессорного времени. МаксХаб работает на минимальном VDS, где во-первых, есть гарантированный объём ресурсов, а во-вторых, этот ресурс делится между тремя малопосещаемыми сайтами, т.е. ресурсов много. В общем, после циклов думаю стоит поднять вопрос о хостинге.

  4. А если в целом, 2с. считается большим временем загрузки? Какое время считается оптимальным (диапазон)?

  5. А если в целом, 2с. считается большим временем загрузки?

    Да. Оптимально не более 1.5 с. А в идеале менее одной.

    Со "скоростью" Максайта я сам лично столкнулся. Когда на сайте более 5-6 тыс записей и более 50 -60-ти категорий, Максайт пытается повесить сервер, на котором работает.smile

    Решается все путем оптимизации SQL и, ГЛАВНОЕ - избавление от бесконечного числа FOREACH, которых в системе бесчисленное множество.