ruby-on-rails – Rails:预定任务来预热缓存?
发布时间:2020-12-16 21:21:45 所属栏目:百科 来源:网络整理
导读:我使用以下内容来缓存使用memcached的缓慢加载页面: caches_action :complex_report,:expires_in = 1.day 控制器操作受Devise身份验证保护. 页面当前在用户第一次请求时被缓存.然后从缓存中提取当天的后续请求. 这个问题是初始请求需要20-30秒才能加载.是否
我使用以下内容来缓存使用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 希望这应该有效.当我尝试它时,似乎为我工作. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |