Ruby 板


LINE

出自我的Blog http://lightyror.blogspot.com/2006/09/rails-cache-page-cache.html Rails 分为 Page Cache ,Action Cache,Partial Cache 现在就先来讲 Page Cache 首先,将你想 cache 的 page 在 controller 里面加入 caches_page :action_name class AbcController < ApplicationController caches_page :index end 然後确定你的环境底下有 enable cache Rails 里面 development 环境下是 disable cache ,production 环境下是 enable cache 如果要在 development 下面 enable cache 可以在 config/environments/development.rb 下面 加入 ActionController::Base.perform_caching = true 即可 如此以後你 click 这个页面,他就会帮你 cache 住页面 如果你仔细翻 log 的话 你会发现有这一段 Cached page: /abc.html (0.00062) 然後你发现到 public 底下有一个 abc.html 里面就是你的 cache page 如果是 index action ,他就直接 cache 成 controller 的名字 如果是其他 action ,他就 cache 成 controller_name/action_name.html 像是 ABC controller 的 index action 就 cache 成 public/abc.html 像是 ABC controller 的 go action 就 cache 成 public/abc/go.html 你可能会觉得奇怪,为何他的 cache page 跟其他的 System 的 cache 不太一样 其他系统的 cache 档名可能是 ajbieohhwio.86787e27.87887073 之类 为啥Rails 的这个 page cache 这个那麽的好读 仔细思考一下 当我们 request abc controller 的 index action 时候 大家都是打 http://www.example.com/abc 那麽 lighttpd 接受到这个 request 的时候(这里仅仅指 lighttpd ,其他 web server 不确定) 他会先去 document root 寻找 abc.html 结果他就发现有 abc.html ( cache 的 page ),就立刻 return 回去了 当中完全没有进到 ruby cgi,完全没有 cgi 快慢的问题 所以这是最快的 cache 方式 如果你某种情况要 expire cache 像是修改 db 之後,要将原先的 cache reload 你可以使用 expire_page :action => 'index' 来手动 expire 掉 但是要注意,这种 page cache 没有设定 expire time 的方式 所以说,要嘛就是当经过某些特定的动作时 expire 掉 cache page 要嘛就是跑一个 backend process 去清掉 cache 这个网页有批评这个 page cache 没有 expire 机制根本就没有用 http://www.almaer.com/blog/archives/001214.html 对此我呈反对态度 就举个例子 乐多Blog的作法就很类似 里面我们个人Blog每个页面都是静态 HTML 页面,而非 PHP 每当我们做出一个改变的时候 管理页面就会帮我们产生新的静态页面 这样的作法当然在产生的时候比较慢 但是 show 页面的时候可以达成比任何 CGI 还要快的效率 Cache 好不好用是看你怎麽用,以及什麽情况要用啥方式 而不是设计出一个每个情况都可以用的方式 那只会显得臃肿没意义 -- lighty RoR 是一个介绍 lighttpd , SQLite , Ruby and Rails 的 Blog http://lightyror.blogspot.com/ --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.230.108.34







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Tech_Job站内搜寻

TOP