Задержка при отображении страницы

Добрый день!
С Новым годом всех!

Помогите разобраться в следующем: есть сайт на MODX Revolution 2.3.2-pl (traditional), всё это дело размещено на Linode

Всё работает, в принципе, нормально. Однако, замечено, что при открытии страницы браузер сначала думает секунды 2-3, а потом открывает всю страницу. И это никак не зависит от содержимого страницы, т.е. даже если просто пустая страница, то все равно задержка 2-3 секунды есть.

Как с этим бороться? Куда копать?
Роман
04 января 2015, 18:25
modx.pro
2
13 097
0

Комментарии: 22

Aртур Чикин
05 января 2015, 03:16
0
Есть дополнение debugParser оно поможет выявить проблему, но что то мне подсказывает что возможно идет долгий ответ от dns серверов.
    Василий Наумкин
    05 января 2015, 08:06
    0
      Роман
      05 января 2015, 10:08
      0
      не очень похоже. Сам скрипт выполняется очень быстро, а вот ожидание первого бита от сервера (TTFB) очень большое:



      это тестовый скрипт Василия. А если открыть пустую страницу из MODX, то TTFB до 2 секунд доходит.
      У меня на Линоде локация в Далласе. Может и правда переехать?
        Василий Наумкин
        05 января 2015, 10:32
        0
        TTFB — это время отдачи первого байта, то есть, скорость генерации страницы PHP.

        Если TTFB высокий, значит PHP медленно работает. Для сравнения можно попробовать открыть статичную HTML страницу, а не PHP.
          Роман
          05 января 2015, 11:34
          0
          а как ускорить его работу?

          Попробовал статичную и динамичную страницу с одинаковым контентом грузить. Статичная стабильно грузится с одним и тем же временем (~185ms), а динамическая скачет от 200ms до 4s.
            Василий Наумкин
            05 января 2015, 12:10
            0
            Проверь работу php из консоли скриптом из моей заметки. Если будет больше 0.2-0.6 то пиши в поддержку Linode и жалуйся на тормоза.

            Если в консоли скорость нормальная — то разбираться нужно с сайтом.
              Роман
              05 января 2015, 17:42
              0
              положил файл со скриптом в корень сайта

              <?php
              $time = microtime(true);
              for ($i = 1; $i <= 1000000; $i++) {
                  $x = rand();
              }
              echo microtime(true) - $time;

              запускаю. Результат: 0.087812900543213
              А время TTFB колеблется от 200ms до 2s. Два раза нормально, на третий долго. Потом опять.

              Я так понимаю, что в Linode жаловаться смысла нет (скрипт же быстро выполняется), и сайт тоже вроде как не причем, т.к. я же просто файл запускаю, минуя всю начинку MODx. Остаются настройки PHP и NGINX, а их я брал из инструкции Василия по настройке сервера.
                Василий Наумкин
                05 января 2015, 17:46
                0
                То есть, скрипт из консоли сервера выполняется быстро, а через браузер до 2х секунд?

                Я правильно понял?
                  Роман
                  05 января 2015, 18:09
                  0
                  не совсем. Если честно признаться, то я не совсем понял в какой консоли и как его запускать, поэтому просто создал в корне сайта файл 123.php и запустил его в браузере.

                  Сам файл выполняется быстро (Результат: 0.087812900543213). Но, я смотрю время загрузки его в браузере (F12, вкладка Network, и несколько раз F5). И вижу там, что TTFB колеблется от 200ms до 2s. Два раза нормально, на третий долго. Потом опять.
                    Василий Наумкин
                    05 января 2015, 18:46
                    0
                    Ну а ты не думал о том, что сигналу нужно еще как-то дойти до тебя и мерять время загрузки страницы в собственном браузере не совсем корректно?

                    Или у тебя идеальный интернет без задержек и тормозов?

                    Если скрипт выполняется за 0.08 — всё в порядке. Для независимого тестирования сайта есть www.webpagetest.org/, loadimpact.com/ и другие сервисы.
        Проблема решилась? Ибо похожая ерунда. У меня Waiting (TTFB) по 2-3 сек. При этом все остальные запросы максимум 10-11мс. Скрипт выполняется даже с браузера за 0.4 сек, с консоли за 0.2 сек. Все вызовы на сайте кешируемые. Заметил такое залипание при выборе новости из списка новостей, где используется getPage. Куда копать? Я так понял проблема не в настройках nginx & php5-fpm.
          Василий Наумкин
          19 мая 2015, 16:57
          0
          TTFB в MODX — это время полной генерации всей страницы.

          Потому что он отдаёт страницу на вывод только после того, как она готова, никаких промежуточных echo (а значит, и байтов) нет.

          Копать в оптимизацию скорости генерации страницы, ориентируйся на плейсхолдер [^t^].
            [^qt^] — 0.0000 s — время запросов к БД;
            [^q^] — 0 — количество запросов к БД;
            [^p^] — 2.4605 s — время работы PHP скриптов;
            [^t^] — 2.4605 s — общее время генерации страницы;

            Браузер отдает эту же страницу за 2.73с из них 2.47с это Waiting (TTFB).
            Таки да, выходит что MODx долго генерирует страницу. Но getResources, getresourceField, ultimateparent вызываются без знака "!", а значит кешируются. Все возможные аякс запросы асинхронные.
            Можете глянуть на www.rnpp.rv.ua
          Роман
          19 мая 2015, 20:43
          0
          Проблема была в ограничении количества запросов к серверу в секунду. Увеличил лимит, решил проблему
        Евгений
        19 сентября 2022, 12:20
        0
        Для MODX есть кэширующий плагин для уменьшения времени отклика сервера: GITHUB modxExtraCachePlugin
        тут есть прогрев кэша и хранение сессий.
          Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
          22