0

我在 PageCaching 上观看 RailsCast:http ://railscasts.com/episodes/89-page-caching-revised并且在其中的某一时刻,Ryan Bates 说了类似的话,“公共目录设置为提供静态服务前端 Web 服务器的文件”。

这让我意识到我并不真正了解 Rails 服务器和“前端”Web 服务器的区别。

我希望有人可以向我解释这一点,也许是对我的本地环境以及 Heroku 生产环境的解释,因为我最近升级到 Cedar,现在不得不手动处理 gzip 压缩,根据我的博客read 是因为“在 Cedar 中,请求不再通过代理服务器 (nginx)”。

4

1 回答 1

0

在 heroku 上,自 cedar 以来,您不再拥有“前端网络服务器”之类的东西。

在 cedar 之前,来自外部的请求由 nginx(因此是前端服务器)处理,而后者又要求本地 rails 服务器(thin、unicorn、webrick 等)生成页面。

如果前端服务器检测到请求的 url 实际上对应于现有文件,它会直接提供它,而不向 rails 服务器进程询问任何内容。大多数时候,这仍然是您在专用服务器上管理请求的方式。

heroku 现在做的是直接将 Rails 服务器暴露给外界,中间没有像 apache 或 nginx 这样的经典网络服务器。

使用 heroku 对您来说意味着您应该将资产和缓存文件上传到第三方 cdn 服务器,以避免将宝贵的 rails 处理时间用于服务这些。

或者,您可以使用动作缓存,以便将 html 写入 memcache 而不是public/. 这实际上是heroku 的建议

关于您的本地环境的说明:您可能也直接使用 Rails 服务器进程。运行时会发生这种情况rails server:它启动直接绑定在端口 3000 上的 webrick 或瘦服务器。因此,那里也没有“前端服务器”。

另请注意,动作和页面缓存在 rails-4 中不再是标准的,而是由 gem提供的。缓存的标准新方法,俄罗斯娃娃缓存,使用 memcache,所以这里的 heroku 没问题。

于 2013-09-09T15:17:43.407 回答