Rails应用程序的Varnish和Rack-Cache有什么意义?

use*_*220 6 caching ruby-on-rails varnish ruby-on-rails-3 rack-cache

我对Rails应用程序的Varnish和Rack-Cache的目的感到有点困惑.在config/environments/production.rb缓存中可以设置类似的东西

config.static_cache_control = "public, max-age=3600"

鉴于此,如果您可以在Rails应用程序本身中设置缓存,那么Varnish和Rack-Cache的目的究竟是什么?

是什么导致默认的Rails应用程序使用机架缓存?

Gor*_*McD 7

静态高速缓存控制会影响Cache-Control的http标头.如同,服务器向中间缓存建议max-age = 3600.

Varnish,Rack-Cache,Squid和其他人主动缓存服务器上生成的内容.数据库调用很昂贵,即使请求未对数据库进行调用,请求所需的基础结构也越少,通常会越快.

Rack :: Cache是​​机架中间件,支持符合HTTP标准的缓存.他们的常见问题解答页面提供了一些关于它的优缺点,比其他缓存解决方案更好.这是一个比较rack :: cache和heroku上的varnish的问题.Rails还有ActiveSupport :: Cache,它处理片段和页面缓存.我不确定区别是什么,但默认情况下它们都包含在Rails中.我之前说过,rack :: cache不是默认的,但我错了.

Varnish,Squid和其他存在于Web服务器前面的Rails堆栈之外(例如Apache/Nginx/etc)作为一个单独的进程.它们具有高度可配置性,独立于应用程序,并具有一些高级功能(例如Squid的ACL).Varnish和其他公司可以最大限度地减少请求必须经过的基础设施.如果它是新的,请求命中Varnish并立即返回客户端.这对于高流量网站而言可能是最有利的,对于较小的应用程序而言可能有点过分.

这是一篇关于heroku的文章,详细介绍了在Rails3中使用rack :: cache.在应用程序中进行页面/片段缓存以及使用memcached作为后端时,也有一些很好的railscast(非常重要).对于清漆和其他产品,您可以从varnish网站上的本教程开始.