We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 44954
    • 3 Posts
    Всем привет. Главная страница моего сайта грузится около 6 секунд. Замерил время, за которое выполняется код самого "тяжелого" сниппета. В итоге получил 1 секунду и удивился. Но потом я закомментировал вызов этого злополучного сниппета и страница загрузилась за 1 секунду. В чем может быть проблема ? Возможно modx злоупотребляет своим парсером и запускает его по поводу и без ? У кого-нибудь есть предположения ? Заранее спасибо.
      • 37237
      • 44 Posts
      1. Попробуйте связку MODX Revolution + phpTemplates + modxSmarty, это действительно дает огромный плюс к скорости выдачи парсером данных. Описание: http://modxclub.ru/blog/dokumentatsiya-dlya-spetsialistov/147.html Тестил данный вариант на http://mgc.by - результат удивителный).
      2. перевход на php версии 5.4.17+, но этот вариант не тестил, подробности:http://modxclub.ru/blog/research/175.html#comment1556 [ed. note: spector last edited this post 13 years, 2 months ago.]
        • 44954
        • 3 Posts
        Оставил в шаблоне только вызов сниппета. Сниппет берет 20 кусков html-кода из кэша и выводит на экран. Время исполнения сниппета 0.023 сек. Время формирования страницы 4.6 секунды. Если закомментировать сниппет, то страница формируется за 0.38 сек. Внутри сниппета один цикл вида :
        $obs=$modx->getIterator('Object', $c);
        $cacheManager=$modx->getCacheManager();
        
        foreach($obs as $ob){
          $cacheKey = 'objects_'.$tpl.'_'.$ob->get('id');
          $cacheOutput = $cacheManager->get($cacheKey);
          print_r($cacheOutput);
          if(empty($cacheOutput)){
            //код не выполняется, так как все объекты закэшированны 
          }
          $ret .= $cacheOutput;
        } 
        return $ret;

          • 37237
          • 44 Posts
          Quote from: svyatopolk at Aug 30, 2013, 06:23 AM
          Оставил в шаблоне только вызов сниппета. Сниппет берет 20 кусков html-кода из кэша и выводит на экран. Время исполнения сниппета 0.023 сек. Время формирования страницы 4.6 секунды. Если закомментировать сниппет, то страница формируется за 0.38 сек. Внутри сниппета один цикл вида :
          $obs=$modx->getIterator('Object', $c);
          $cacheManager=$modx->getCacheManager();
          
          foreach($obs as $ob){
            $cacheKey = 'objects_'.$tpl.'_'.$ob->get('id');
            $cacheOutput = $cacheManager->get($cacheKey);
            print_r($cacheOutput);
            if(empty($cacheOutput)){
              //код не выполняется, так как все объекты закэшированны 
            }
            $ret .= $cacheOutput;
          } 
          return $ret;

          Это все понятно, но modx сохраняет в кэше чанки и сниппеты в виде [[$chunk_name]] и [[snippet_name]] соответственно, т.е. даже если доставать из кэша закэшированные данные о содержимом страницы, то не будет получен чистый html, а получен html с тегами modx и modx все равно будет эти данные парсить. Вот отсюда и тормоза.