rails page cache with subdomain
Wednesday, April 23rd, 2008 ruby on rails在默认情况下对于同一个应用的多个域名的page cache是不能区分目录的..对于一些应用来说会有些麻烦,比如多用户blog系统,或是cms系统的不同频道指定不同二级域名(如:http://finance.sina.com.cn)的时候,index页面是无法正常工作的(写到这里突然想起来应该先去看看typo,Mephisto等系统的实现)..对于这个问题郁闷了很久…其实解决办法也很简单..就是对于不同的二级域名的page cache的文件保存到不同目录,然后通过web服务器提供的url rewrite功能来重写请求.(对于非二级域名的多域名应用的情况下,只要指定整个域名为cache目录也可以解决.)
e.g:
http://wap.upulife.com => /public/wap/index.html
http://finance.upulife.com => /public/finance/index.html
代码:
#实现subdomain page cache功能.
module ActionController::Caching::Pages
def cache_page(content = nil, options = {})
return unless perform_caching && caching_allowed
subdomain = ‘’
#TODO: 需要确认 .com.cn 等域名(3段)不加www的情况下是不是 request.subdomains.first.blank?
#顶级域名不写子目录,??? rewrite rule如何写呢?
unless request.subdomains.first.blank? […]

