Преимущества производительности полностраничного кэша в Magento Enterprise достаточно хорошо известны. Что может быть не так хорошо известно, так это то, что для полной выгоды от этого, он должен быть полностью заполненным и горячим, особенно в больших наборах продуктов, где у вас нет всего нескольких страниц, таким образом используя органический трафик для премьер это достаточно быстро.
Magento включает в себя встроенный cronjob для сканирования сайта и прогревания FPC рано утром.
Я видел и слышал о проблемах, вызванных тем, что ранние утренние задания выполнялись слишком долго, что мешало запуску других заданий, и хотел бы знать, что другие используют или предложат использовать для этого. У меня есть пара идей:
- Соберите сценарий оболочки для сканирования каждой страницы в созданном файле карты сайта.
- Используйте отдельную запись crontab и короткий PHP-скрипт для начальной загрузки Magento и непосредственного запуска процесса сканирования.
Любые мысли и / или опыт по этому поводу можно только приветствовать!
источник
Ответы:
Вы можете использовать осаду в сочетании с
sitemap.xml
файлом, как это делает MageSpeedTest .Тогда беги
Контент получен отсюда .
источник
–delay
Мы просто не - вообще. Когда-либо. Мы будем говорить это снова и снова, но
Ваш сайт должен быть быстрым без добавления FPC (или Varnish для этого факта). Всегда будет время, когда контент не заполнен (ваш сценарий выше).
В незагруженном магазине время загрузки страницы с FPC не должно быть намного более впечатляющим, чем без FPC; Magento вполне может рассчитывать на
< 400ms
загрузку страниц на стандартных кешах (на страницах категории / продукта / поиска). FPC понизит это до< 80ms
- но идет с оговорками.Новые товары / более релевантный поиск устарел до аннулирования или истечения срока действия TTL
и т.п.
Почему опора на FPC (или лак) - плохая идея
Если вы хотите постоянно проверять, заполнены ли кэши вручную, вероятно, есть несколько причин
Вы не можете кэшировать все
Если вы берете магазин только с 5 категориями, вложенными 2 уровня глубиной, 5 фильтруемых атрибутов, 5 вариантов атрибутов каждый и 1000 товаров; то есть много возможных комбинаций.
25 вариантов на выбор, выбирая один до 5 раз подряд - я не статистик , но я знаю, что это ... (при условии, что количество параметров атрибута не уменьшается полностью)
Хорошо, вышеприведенный сценарий маловероятен, как я мог бы предположить, в 3 клика - количество доступных продуктов уменьшилось бы настолько, чтобы клиент мог найти свой продукт. Так что даже если бы это было ...
Тогда раз, что на 5 категорий, то есть 625 URL. На этом этапе мы говорим о крошечном каталоге и полностью игнорируем все URL-адреса продуктов.
Мы также не учитываем, что если у вас есть вложенные категории с
is_anchor
включенным, это будет увеличиваться в геометрической прогрессии.Таким образом, чтобы сканировать этот объем страниц - нужно либо надеяться, что время загрузки ваших страниц хорошее и низкое для начала, так что это быстрый и легкий процесс (таким образом, побеждает цель сканирования) - или что у вас есть достаточно времени для его завершения до истечения TTL.
Если у ваших страниц было время загрузки страницы 0,4 с, а у вас 8-ядерный процессор - тогда ...
0,5 минуты, неплохо - но давайте представим, что у вас было время загрузки страницы 2 с
Но если вы взяли максимально возможный сценарий
Так что это ваш рабочий сервер, при 100% загрузке процессора в течение 15 минут. Вы бы снизили скорость сканирования пропорционально желаемому TTL.
Таким образом, если вы хотите, чтобы содержимое имело TTL 3600 с, сканирование может быть в 4 раза медленнее - т.е. только 25% ЦП выделено для сканирования. Это большой ресурс только для того, чтобы поддерживать содержание категории в заглавии - на данном этапе мы даже не учитывали продукты, условия поиска или дополнительные просмотры магазина.
Фактически, просто взглянув на явный размер комбинаций в
catalog_url_rewrites
таблице (который даже не учитывает параметры от многоуровневой навигации), можно получить представление о том, сколько URL-адресов вам может понадобиться сканировать.Каждый магазин, безусловно, будет отличаться, но я пытаюсь сделать так, чтобы сканирование сайта на первичную FPC было непрактичным. Просто убедитесь, что ваш магазин быстро с самого начала .
Где FPC полезен
Преимущества FPC проявляются в сильно загруженном магазине, где у вас действительно высокий уровень трафика, а кеши естественным и постоянным образом загружаются только благодаря пешеходному переходу.
Затем FPC вступает в игру, уменьшая накладные расходы инфраструктуры на часто запрашиваемый контент - сокращая количество повторных обращений к бэкэнду Magento.
Итак, мы обнаружили, что FPC отлично подходит для развертывания, когда у вас очень высокий уровень трафика - не для сокращения времени загрузки страницы - но для уменьшения использования ресурсов.
Кому интересно, я все равно хочу ползти
Ну, тогда у вас есть два варианта
И есть много утилит, чтобы сделать оба из них, вот некоторые, о которых я знаю
Использование Mage-Perftest
Вы можете довольно легко сканировать свой магазин с помощью Mage-Perftest, сначала загрузив его
Затем определите процесс сканирования, используя карту сайта Magento (вы можете настроить ее, создав карту сайта с любыми URL-адресами, при условии, что URL-адреса заключены в
<loc></loc>
теги). Следующая команда прочитает все URL-адреса из файла карты сайта, а затем сканирует (только PHP) URL-адреса в течение 1440 минут (1 день). Если сервер превышает 20% процессорного времени или средняя загрузка составляет 2 - сканирование будет временно приостановлено.Если у вас 1000 URL-адресов, просканированных за 1 день, это будет ок. 1 запрос каждые 86 секунд ~ цель 0,011 RPS
источник
Я сохраню свою полную напыщенную речь для поста в блоге в эти дни, но пока у меня есть пик на моем маленьком нагревателе кеша
wfpc
.Тестирование производительности
Вы можете проверить производительность вашего сайта Magento
./wfpc -t http://mymagentosite.com/sitemap.xml
FPC Потепление
И вы можете подогреть FPC, который будет попадать на каждый URL в sitemap.xml.
./wfpc -w http://mymagentosite.com/sitemap.xml
Вы также можете установить задержку между запросами, если хотите, вот задержка в 1 секунду между запросами.
./wfpc -w -d=1 http://mymagentosite.com/sitemap.xml
Тестовый режим выбирает только 10 URL случайным образом, поэтому, как только вы согреете свой FPC, вы можете запустить тестовый режим, чтобы узнать, какую разницу имеет FPC!
мысли
Лично я думаю, что теплее имеет смысл ... На небольшом сайте с 40 страницами время загрузки сокращается примерно вдвое с помощью FPC. На большом сайте с почти 40 000 продуктов, использующими Lesti_FPC с APCu в качестве бэкэнда, я использую чуть более 200 МБ для кеша, чего, честно говоря, нет на производственном сервере 8 ГБ.
источник