我使用以下内容通过 memcached 缓存加载缓慢的页面:
caches_action :complex_report, :expires_in => 1.day
控制器操作受 Devise 身份验证保护。
当前,该页面在用户第一次请求时被缓存。当天的后续请求将从缓存中提取。
这样做的问题是初始请求需要 20-30 秒才能加载。是否可以通过计划任务的方式提前填充缓存?
任何建议都非常感激。
这是对之前基于 cron 的解决方案的扩展,它使用curl 存储 cookie 的功能,以便您可以在一个步骤中进行身份验证,然后在下一步中作为经过身份验证的用户再次使用 cookie。因此,如果您将这些行放入名为“prepare_cache.sh”的脚本中
rm /tmp/cookiejar
curl --request POST -d "login=<username>" -d "password=<password>" -c /tmp/cookiejar http://yourwebpages.url/login
curl --request GET -b -c /tmp/cookiejar http://yourwebpages.url/page_to_cache
rm /tmp/cookiejar
将登录名和密码参数替换为与登录表单中使用的变量以及要调用的 URL 相匹配的参数。我之前删除了 cookiejar,以确保那里已经不存在文件,并在最后删除它,以确保不存在具有不应具有的访问级别的 cookie。
然后您可以使用 cron 作业调用此脚本:
*/15 * * * * /home/myname/prepare_cache.sh > /dev/null 2>&1
希望这应该有效。当我尝试时似乎对我有用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)