2011-11-19 90 views
1

我在3个应用程序服务器(3个节点)上运行Rails 3.1应用程序。 部署时,资产管道通过capistrano钩子在所有3个实例上编译资产,服务器负载过高。在rails 3.1应用程序中,我可以从一台服务器上编译和提供静态资产吗?

我可以做的事情是预先编译资产并上传到应用服务器。

在最前面,我运行Nginx来在集群中分配请求。

我的问题是我可以只在一台服务器上编译资源并仅通过该实例提供资源吗?

这将减少所有3个应用程序服务器上资产的编译/上传。有没有人以这种方式部署?

回答

1

解决此问题的最简单方法是在本地编译,提交文件并上载,而不运行编译任务。

另一种方法是在本地编译,上传到任何你想要的服务器,并设置nginx将请求转发到该服务器。

第三种方法是将本地编译的资源上传到所有三台服务器,并让nginx像以前一样平衡负载。

你应该不管做什么都应该做的事情是设置nginx为/ assets添加远期标题并设置最大压缩。这减少了对这些资产的请求(由于客户端缓存),并且在第一次请求时减少了交付时间。

相关问题