rails缓存技术

作者: 五月的约修亚 | 来源:发表于2017-03-10 17:05 被阅读0次

三种缓存技术:页面,动作和片段。

Rails 默认支持片段缓存。如果想使用页面缓存和动作缓存,要在 Gemfile 中加入 actionpack-page_caching 和 actionpack-action_caching。
在开发环境中若想使用缓存,要把

config.action_controller.perform_caching

选项设为 true。这个选项一般都在各环境的设置文件(config/environments/*.rb)中设置,在开发环境和测试环境默认是禁用的,在生产环境中默认是开启的。

config.action_controller.perform_caching = true

这三种缓存技术在缓存数值和对象方面不太实用,在这种场景下需要使用底层缓存

底层缓存

实现底层缓存最有效地方式是使用 Rails.cache.fetch 方法。这个方法既可以从缓存中读取数据,也可以把数据写入缓存。传入单个参数时,读取指定键对应的值。传入代码块时,会把代码块的计算结果存入缓存的指定键中,然后返回计算结果。
以下面的代码为例。程序中有个 Product 模型,其中定义了一个实例方法,用来查询竞争对手网站上的商品价格。这个方法的返回结果最好使用底层缓存:

class Product < ActiveRecord::Base
    def competing_price
        Rails.cache.fetch("#{cache_key}/competing_price", expires_in: 12.hours) do
            Competitor::API.find_price(id)
        end
    end
end 

注意,在这个例子中使用了 cache_key 方法,所以得到的缓存键名是这种形式:products/233-20140225082222765838000/competing_price。cache_key 方法根据模型的 id 和 updated_at 属性生成键名。这是最常见的做法,因为商品更新后,缓存就失效了。一般情况下,使用底层缓存保存实例的相关信息时,都要生成缓存键。
如果想要手动清除该缓存则使用
Rails.cache.delete("#{cache_key}")

参考
http://guides.ruby-china.org/caching_with_rails.html
http://www.jianshu.com/p/b3dfe567a539

相关文章

  • rails缓存技术

    三种缓存技术:页面,动作和片段。 Rails 默认支持片段缓存。如果想使用页面缓存和动作缓存,要在 Gemfile...

  • 我所知道的rails cache机制

    cache就是缓存,善用缓存可以极大提高网站的性能。rails作为一个full-stack的web应用开发框架,它...

  • 〈译〉使用REDIS处理RAILS MODEL缓存

    原文:Rails Model Caching with Redis Model层的缓存常常都会被忽略,甚至是经验丰...

  • Day24 心得体会&读书笔记

    一、心得体会1、今天完成了什么今天主要完成了Rails100道考试题的7道 2、今天收获了什么 Rails的缓存有...

  • php缓存技术

    php缓存技术 普遍缓存技术 数据缓存:这里所说的数据缓存是指数据库查询缓存,每次访问页面的时候,都会先检测相应的...

  • rails 模板中使用缓存

    这个辅助函数主要用于高速缓存视图片段而不是整个动作或者页面的方法。这种技术是非常有用,如菜单,newstopics...

  • 2018-08-08-关联缓存

    rails 为了提高性能,在通过关联获取数据时,会缓存数据。 比如下面这个例子 a = Author.firsta...

  • 缓存技术

    一、缓存概述 缓存是高速缓冲存储器、一种特殊的存储器子系统,其中复制了频繁使用的数据以便于快速的访问 缓存是分布式...

  • 缓存技术

    1.页面静态化 把已有的动态页面静态化,并让它按时在数据库中重新取数据更新页面。 优点:加载快。 主要应用了 文件...

  • 缓存技术

    为了减少我们从网络获取数据(图片)的次数,我们会从网络获取到之后,缓存到我们的内存中。所以在我们网络编程中,缓存技...

网友评论

    本文标题:rails缓存技术

    本文链接:https://www.haomeiwen.com/subject/gkkogttx.html