rails笔记 cache系统

本文详细介绍了Rails中的缓存系统,包括默认缓存行为、手动缓存方式、页面缓存和动作缓存的区别,以及如何管理和清除缓存。此外还讨论了缓存片段的使用方法和不同的缓存存储方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

cache系统 1

cache系统默认只在production下面生效, 要手动生效 修改环境(config/environments) ActionController::Base.perform_caching=true|false

手动cache

  • caches_page :xxxaction 直接cache整个页面,相当于html
  • caches_action :xxxxaction 只cache action,也就是要执行filter

cache只适合静态内容, 动态变化的内容不适合cache

cache的清除

手动清除,他们接受的参数都和url_for一样,直接按照url来过期

  • expire_page
  • expire_action

自动清除

通过定一个sweeper类 < ActionController::Caching::Sweeper实现after_create after_update,after_destory三个方法, 传入的参数就是model对象

在controller中生效的方式是cache_sweeper指令

批量清除 pagecache会放在app/public/下面,清除对应的html即可,比如写一个crontab,cache目录和文件名的控制如下 ActionController::Base.page_cache_directory = "dir/name" ActionController::Base.page_cache_extension = ".html"

rails的忠告, 为了避免新出现的google web accelarator这样的工具破坏web, 所有风险大的操作都应该隐藏在POST协议中, 不要直接用get,不然一旦被客户端(和真实用户在一个session中)抓住, url就不保险了

cache系统 2

通过 <%cache do%> ... <%end%>

来实现部分cache

通过expire_fragment(:action=>'xxx')来清除对应cache

如果一个页面里面有多个part 可以使用 cache(:part=>"yyy") 在清除的时候加入:part=>"yyy"就可以了

cache(:controller=>..:action=>...)参数和url_for类似

cache的存储方式有4种可选

  • ActionController::Caching::Fragments::MemoryStore.new 直接内存(not a good idea when data is large)
  • ActionController::Caching::Fragments::FileStore.new(path) 直接文件
  • ActionController::Caching::Fragments::DRbStore.new(url) drbserver
  • ActionController::Caching::Fragments::MemCachedStore.new(host) 使用memcached server

转载于:https://www.cnblogs.com/baoz/archive/2006/01/24/2269861.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值