快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-14
境配置文件,比如 production.rb)对它进行配置。

清单 10. 配置缓存

config.action_controller.perform_caching = true
memcache_options = {
 :c_threshold => 10_000,
 :compression => false,
 :debug => false,
 :readonly => false,
 :urlencode => false,
 :ttl => 300,
 :namespace => ''igprod'',
 :disabled => false
}
CACHE = MemCache.new memcache_options

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

时间:2011-11-20 Bruce Tate

清单 10 显示了一种典型的配置,其中第一行 config.action_controller.perform_caching = true 将启用缓存。接下来的一行将准备缓存选项。注意 ,这里的诸多选项是为了让您可以获得更多的调试数据、禁用缓存和定义该缓存的名称空间。在 参考资 料 部分给出的 memcached 站点可以找到有关配置选项的更多信息。

模型缓存

我们使用的 最后一种缓存是基于模型的缓存。我们使用的是称为 CachedModel 的缓存插件的一种定制版本。模型缓 存实际上是一种有限形式的数据库缓存。缓存很容易按模型启用。

要想让模型使用缓存解决方案 ,只需扩展 CachedModel 类,而非扩展 ActiveRecord,如清单 11 所示。 CachedModel 扩展 ActiveRecord::Base。ActiveRecord 并非全对象关系型映射层。此框架极大地依赖于 SQL 来执行复杂的 特性,而且如果需要,用户可以很容易降至 SQL。直接使用 SQL 会使缓存出问题,因为缓存层必须处理 完整的结果集,而不是单独一个数据库行。处理完整的结果集常常会问题不断,而且如果没有支持应用程 序的深层逻辑,这几乎不太可能。正由于这个原因,CachedModel 的焦点才会放到缓存单个模型对象上, 并只加速返回单行结果的查询。

清单 11. 使用 CachedModel

Class Cause < 

CachedModel

大多数 Rails 应用程序都会重复访问多个条目,例如用户对象。模型缓存在很多 情况下都可以明显地使速度加快。对于 ChangingThePresent,我们刚刚开始加速基于模型的缓存。

结束语

Ruby 虽然是一门生产率极高的语言,但若从性能角度考虑,该语言解释性的特性 让它并不那么理想。大多数主要的 Rails 应用程序都将会通过有效利用缓存来弥补某些不足。对于 ChangingThePresent.org,我们主要使用分段缓存,并通过控制器使用基于时间的方法来使缓存分段到期 失效。这种方式很适合我们的网站,即使其中有一些页面会基于登录进来的用户有所变化。

我们 还研究了使用受 memcached 支撑的 CachedModel 类所能带来的影响。虽然我们的研究还仅限于缓存对数 据库性能所造成的影响,但早期的结果还是很有希望的。在 下一篇 文章中,我将介绍一些实用技巧,您 可以使用这些技巧来为另一个真实世界中的 Rails 示例进行数据库优化。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号