Magento FPC Cache Warm с группами пользователей, wget, Lesti FPC
Я использую Lesti FPC на сайте Magento с 10 группами клиентов и множеством категорий / продуктов.
Я создал сценарий оболочки, который читает sitemap.xml и каждый URL-адрес wget в одночасье, чтобы создать кеш сайта. Это прекрасно работает для гостей, но когда пользователь из группы клиентов входит в систему, он сам создает кеш (если это первый день).
Кто-нибудь знает, как создать сценарий оболочки, который мог бы имитировать вход в систему и затем трал сайт? Возможно ли, чтобы сценарий оболочки содержал собственную информацию о сеансе / cookie, чтобы оставаться в системе? а если нет, то есть другие идеи?
Большое спасибо
1 ответ
Итак, благодаря некоторому поиску в Google и большому количеству проб и ошибок, я нашел решение, которым, как я думал, я бы поделился.
Вы можете использовать WGET для хранения информации о сеансе / куки, сохраняя и загружая куки. У Magento есть собственное ограничение, так как вам нужно установить cookie сеанса перед тем, как вы войдете в систему, иначе скрипт будет перенаправлен на страницу "enable-cookies", а не на вход в систему, поэтому вот сценарий;
#!/bin/bash
# Establish a session and nab the cookie
wget --save-cookies cookies.txt \
http://www.yourmagentourl.co.uk/
# Post your user credentials to login and update the cookie
wget --save-cookies cookies.txt \
--load-cookies cookies.txt \
--post-data 'login[username]=USERNAME&login[password]=PASSWORD' \
http://www.yourmagentourl.co.uk/customer/account/loginPost/
# Load the cookie for each page you want to WGET to maintain the session
wget --load-cookies cookies.txt \
-p http://www.yourmagentourl.co.uk/some-category.html
Это основа, поэтому теперь очень легко загрузить все URL-адреса из файла sitemap.xml и создать зарегистрированные версии кэша.
Поддерживает Grafista для сохранения информации о cookie.
Удачного кеширования!
РЕДАКТИРОВАТЬ - ПО ЗАПРОСУ ПОКАЗАТЬ ОРИГИНАЛЬНЫЙ КОД
Вот код для циклического перемещения по карте сайта и загрузки каждой страницы для создания кэша для гостей. Сохраните его как cachewarm.sh и создайте cronjob, чтобы запускать его каждую ночь (не забудьте сначала удалить или закончить кеш страниц)
#!/bin/bash
# Pixie Media https://www.pixiemedia.co.uk
# Use the sitemap and reload the Page Cache by accessing each page once
#
wget --quiet http://YOUR-URL.co.uk/sitemap.xml --output-document - | egrep -o "http://YOUR-URL.co.uk/[^<]+" | wget -q --delete-after -i -