我们如何使在负载均衡器后面运行的多个应用服务器上的rails页面缓存失效? 我尝试实现缓存清理程序,但它只扫描接收请求的应用程序服务器上的缓存。缓存的页面存储在公共目录中。
答案 0 :(得分:0)
您可以通知所有服务器扫描缓存(例如,通过特殊URL或数据库,在这种情况下,您需要一个定期检查数据库并使缓存无效的作业),或者使缓存无效通过cronjob定期(建议你使用whenever)。
编辑:另一个解决方案是通过NFS或类似的东西在所有机器上共享公共目录。这样,每台服务器都可以使所有计算机的缓存无效。
答案 1 :(得分:0)
假设您可以让您的应用服务器访问公共文件存储,您可以更改rails存储缓存的位置。这样,当您使缓存过期时,它将反映在所有应用服务器上。在您的配置中,只需添加:
config.cache_store = :file_store, "/path/to/cache/directory"
这可能是最简单的方法。还有其他方法,例如memcached服务器。
此处有更多信息:http://guides.rubyonrails.org/caching_with_rails.html#activesupport-cache-filestore