快速业务通道

真实世界中的Rails: Rails中的缓存 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-14

真实世界中的Rails: Rails中的缓存

时间:2011-11-20 Bruce Tate

产品 Rails 应用程序的不同缓存策略

简介:Ruby on Rails 现在愈来愈多地被作为基本框架广泛用于大中型可伸缩的复杂应用程序中。由 于 Ruby 是一种解释型语言,所以要想使 Rails 随您所愿,需要使用很多不同的缓存策略。本文展示了 目前可用的一些缓存策略,包括我们为 ChangingThePresent.org 所使用的那些。

关于本系列

Rails 在开发人员中享有盛誉。Rails 一度备受瞩目,是业界争论的焦点。人们对它的评价也大 相径庭:从一种高生产率技术到一个小玩意,从市场定位准确到宣传过度。与很多新技术一样,Rails 也 被毫无例外地被打上了 “未经验证、可扩展性有限” 的标记。与 C 和 Java™ 语言不 同,Ruby 是解释性的,且存在性能上的一些固有阻碍。

实际上,Internet 上的许多大型网站都 使用的是解释性语言。这些网站均引入了类似 Ruby 所采用的相同的策略:即集群式的无共享的架构。此 外,缓存也是必需的。要获得尽可能好的性能,许多站点都需要采用一种有效的缓存策略。Rails 开发人 员也开始跟随其后。

几个场景

首先,让我先来带您浏览几个 ChangingThePresent.org 中 的页面吧。我将显示站点中几个需要缓存的地方。然后,再指出我们为其中每个地方所做出的选择以及为 实现这些页面所使用的代码或策略。尤其会重点讨论如下内容:

全静态页面

几乎无变化的 全动态的页面

动态页面片段

应用程序数据

先来看看静态页面。几乎每个站点都会 有静态页面,如图 1 所示,其中还有我们的条款和条件。可以通过单击 register 然后再选择是否接受 用户协议来浏览相应页面。对于 ChangingThePresent 而言,我们从此页中删除了所有动态内容以便 Apache 能够对它进行缓存。按照我们 Apache 中配置的规则,这些内容永远都不会由 Rails 服务器生成 。因此,我根本无需对其考虑 Rails 缓存。

图 1. 用户协议

真实世界中的Rails: Rails中的缓存 - 编程入门网

真实世界中的Rails: Rails中的缓存(2)

时间:2011-11-20 Bruce Tate

接下来,再来看看 全动态页面。理论上讲,ChangingThePresent 可以有一些动态构建的页面,但是这些页面一般很少变化 。由于几乎所有页面都会显示用户是否登录,因此我们并不怎么关注这种缓存。

再下来,看看页 面分段缓存。图 2 中所示的主页原来是完全静态的,现在,有一些元素变成了动态的。每天,页面都会 显示一系列礼物,这些礼物有的是随机选的,有的则由我们的管理员选定。请注意在标题为 “A Few of our Special Gifts for Mother''s Day” 节下的那些礼物,同时也请注意在最右边显 示为 “login.” 的那个链接。此链接取决于用户是否登录。我们不能缓存整个页。页面每天 只能改变一次。

图 2. 主页

真实世界中的Rails: Rails中的缓存 - 编程入门网

最后再考虑应用程 序。除非是在 15 年之前进行网络冲浪,否则您现在遇到的有趣站点全部都是动态的。现代的应用程序大 都分层,而且可以通过在层间添加缓存来使这些分层更加有效。ChangingThePresent 在数据库层采用了 一些缓存。接下来,我将深入讨论不同类型的缓存,还会介绍我们为 ChangingThePresent 都采用了何种 缓存。

缓存静态内容

除了图像之外,有关缓存静态数据的内容,可讲的内容不多。由于我们的 网站是一个慈善性质的门户网站,这意味着我们需要更多地关注用户的感受,比如多加入一些图像或视频 。但我们的 Web 服务器 Mongrel 并不能很好地服务静态数据,因此我们使用 Apache 来服务图像内容。

我们现在正在着手转向采用图形加速器 Panther Express 来缓存最经常被使用的图像以使其能够 更快地被我们的客户访问到。要采取这种策略,我们将需要一个子域 images.changingThePresent.org。 Panther Express

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号