我在拥有10个客户群和许多类别/产品的Magento网站上使用Lesti FPC。
我创建了一个shell脚本,该脚本读取sitemap.xml并在一夜之间确定每个url以构建站点的缓存。这对客人很有用,但是当客户组用户登录时,他们自己构建缓存(如果他们是当天的第一天)。
有谁知道如何制作一个可以模拟自己登录然后搜索网站的shell脚本?是否有可能shell脚本保留自己的会话/ cookie信息以保持登录状态?如果没有,还有其他想法吗?
非常感谢
答案 0 :(得分:2)
所以感谢一些谷歌搜索和大量的反复试验,我找到了一个我认为可以分享的解决方案。
您可以使用WGET通过保存和加载Cookie来保存会话/ cookie信息。 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
这是基础,所以现在很容易从sitemap.xml加载所有url并构建缓存的登录版本。
向Grafista道具,以保存cookie信息。
快乐缓存!
编辑 - 根据要求显示原始代码
这里是循环访问站点地图并加载每个页面以为访客构建缓存的代码。将其保存为cachewarm.sh并创建一个cronjob以便每晚运行它(不要忘记先删除或过期你的pagecache)
#!/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 -