代码之家  ›  专栏  ›  技术社区  ›  Matthew Savage

混合Rails缓存选项,我是在重新设计吗?

  •  1
  • Matthew Savage  · 技术社区  · 15 年前

    不过,我们并没有真正重新设计,我们有一个大型的基于内容的网站,它可以处理一定程度的负载(在我们解决了SQL池问题之后),然后我们就没有动力了。这很大程度上是由于我们试图修复的错误代码,但很大程度上是由于请求的级别等。

    我们在考虑页面缓存,因为它太快了(是的…:d)但这不起作用,因为页面中有特定于登录用户的片段。但并非所有的希望都丧失了…

    我想知道做以下工作是否理想:

    1. 页面级缓存,在内容更新时使用清除器清除页面。
    2. 将特定于用户的片段替换为占位符(可能还包括诸如……之类的一般内容)查看您的帐户,或在此处注册')
    3. 当用户页面加载时,触发一个异步请求(Ajax,或者有些人会称之为Ajah),请求“动态”片段,然后将内容占位符与此片段放在一起。

    我能看到的主要问题是,关闭JS的用户看不到内容,但老实说,我不认为我们会受到太大的影响,而且大多数禁用JavaScript的imho人都是白痴(是的,我说过!).

    我也有兴趣知道我是否(毫无疑问)在重新发明什么东西,如果有人能给我指出一个已经在做这种事情的网站,我会很感激的。

    谢谢大家,太棒了!

    3 回复  |  直到 15 年前
        1
  •  3
  •   John Topley    15 年前

    Ryan Bates在 Railscast 169: Dynamic Page Caching . 值得一看。

        2
  •  0
  •   Ben Crouse    15 年前

    您考虑过服务器端片段缓存吗?我已经广泛使用了它,而且它再好不过了。您可以简单地缓存内容“片段”并正常呈现依赖于登录用户的内容。

    碎片缓存有很多好的资源,我将从文档开始: http://api.rubyonrails.org/classes/ActionController/Caching/Fragments.html

    从scaling rails系列中也可以看出: http://railslab.newrelic.com/2009/02/09/episode-7-fragment-caching

        3
  •  0
  •   hurikhan77    15 年前

    当服务静态内容或缓存内容开始减慢服务实际工作进程时,将反向代理作为应用程序的前端。由于文件系统缓存效率越来越低,它将释放进程来完成真正的工作并减少速度下降。它将帮助您使“客户端缓存”可供多个访问者共享。请看一看有关newrelic缓存和缩放的精彩屏幕广播系列: http://railslab.newrelic.com/scaling-rails