Как загнать в кеш все ресурсы сайта?

Подскажите, пожалуйста, как проще всего загнать в кеш все страницы сайта на MODX?
Богдан
03 марта 2013, 01:21
modx.pro
3
2 195
0

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

Василий Наумкин
03 марта 2013, 07:49
0
Лично у меня только один вариант — консольный скрипт с wget, который пробежит по всем страницам и закачает их, генерируя тем самым кэш.
wget -m -np -nv -A .html http://sitename.ru/ > /dev/null

Это не быстро, но гарантированно загонит в кэш ВСЕ страницы, которые доступны по ссылкам. То есть, даже динамические, типа вывода каталога с разбивкой на страницы.
    Богдан
    03 марта 2013, 07:53
    0
    Спасибо, Василий! Отличное простое решение.
      Василий Наумкин
      03 марта 2013, 08:05
      0
      Немного почитал еще маны и вот итоговая команда:
      wget -m -np -nv --spider -l 10 http://sitename.ru/
      Здесь wget работает в режиме «паука» и просто дёргает страницы, не загружая их.

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

      Полезный параметр -l 10 ограничивает глубину выборки ссылок, его можно уменьшить, для скорости.
        Богдан
        17 марта 2013, 04:04
        0
        Заметил, что wget отправляет запросы также и на изображения. Поэтому немного дополнил команду:
        wget -m -np -nv -R jpg,jpeg,gif,png,tif --spider -l 10 http://sitename.ru/
        Василий Наумкин
        03 марта 2013, 08:33
        0
        Есть одна проблема: wget добавляет index.html для контеёнеров и получает 404.

        Если ты используешь Nginx — то добавь своему сайту правило
        location ~ ^\/(.*?)\/index\.(html|php)$ {
        	rewrite	^\/(.*?)\/ /$1/ permanent;
        }
      Василий Краковецкий
      03 марта 2013, 13:03
      0
      Видел вот такой сниппет от самого Боба Рея — bobsguides.com/refreshcache-tutorial.html он легко находится в диспетчере пакетов по названию, и хотя действует намноооого дольше чем предложенный Василием wget, но вот для «простых смертных», не знакомых с wget'ом его вполне можно советовать, как не быстрое, но действенное решение для данной задачи.
        Богдан
        03 марта 2013, 16:44
        0
        Спасибо, Василий, посмотрю какой метод на практике лучше.
          ViktorK
          26 марта 2013, 15:26
          0
          Хороший сниппет, но почему-то не кеширует тикеты((
            Василий Краковецкий
            26 марта 2013, 15:41
            0
            В самом сниппете както не предусмотрено чтобы можно было брать ресурсы не только
            'hidemenu' => '0',
                        'class_key' => 'modDocument',
            а это решается копированием и переделкой, или переделкой и отправкой изменений на гитхаб — github.com/BobRay/RefreshCache/
              Дмитрий
              30 мая 2018, 22:03
              0
              'OR:class_key:IN' => array('TicketsSection','Ticket','msCategory','msProduct','modDocument'),
          Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
          10