Jas*_*son 11 caching ruby-on-rails varnish
我想在我们的Web应用程序(数千页)上缓存由Rails堆栈呈现的完整页面,但不要经常更改.每个渲染在资源方面都非常昂贵.
我对Varnishd如何工作的理解是,当对URL进行初始调用时,Varnishd将检查其缓存存储,将发生未命中,因此请求将被传递到Rails,然后将生成的结果页面添加到Varnishd缓存.
对该URL进行的任何后续调用然后从Varnishd缓存提供服务,不涉及Rails堆栈.
这是正确的还是我离开了?
如何更新特定页面并反映其缓存存储中所做的任何更改,我的应用程序如何告诉Varnishd?
Varnishd是否是一个很好的选择?
感谢您的帮助 - 我知道这些是非常基本的问题,但是文档只是不清楚(至少对我来说).
要执行动态高速缓存失效,您可以purge.url {some regexp}
通过管理通道从应用程序服务器发送.例如,purge.url "^/some/page/$"
.但是,从Rails开始,使用PURGE
HTTP方法可能最简单.因此GET
,您不会执行HTTP ,而是PURGE
针对相同的URI执行操作:
PURGE /some/page/ HTTP/1.0
Host: example.com
Run Code Online (Sandbox Code Playgroud)
localhost
除非您在配置中覆盖该请求,否则必须提供此请求.
一些链接:
我建议阅读 Mark Nottingham 撰写的 HTTP 缓存指南:http://www.mnot.net/cache_docs/
为了使用带有缓存的反向代理,您需要在 http 响应中指定到期时间。当有新内容可用时,通常不可能“告诉”缓存服务器,因为该协议旨在通过互联网进行联合,并且当您有新的小猫图片时,您不会希望必须告诉世界各地的服务器:- )
Rails 页面缓存根本不是一回事。这只是将工作卸载到 Web 服务器以静态地提供文件,但在决策中不涉及 http 协议。
警告:我应该指出,我个人还没有尝试过 Varnish。这个答案基于(我认为正确的)假设,即 Varnish 是一个 http 缓存反向代理。
归档时间: |
|
查看次数: |
3025 次 |
最近记录: |