我用了这个人的帖子(做了一些修改)
class ApplicationController < ActionController::Base
# Cache pages with the subdomain
def cache_page(content = nil, options = nil, gzip = Zlib::BEST_COMPRESSION)
path = [nil, request.subdomains, nil].join("/") # nil would add slash to 2 ends
path << case options
when Hash
url_for(options.merge(:only_path => true, :skip_relative_url_root => true, :format => params[:format]))
when String
options
else
if request.path.empty? || request.path == '/'
'/index'
else
request.path
end
end
super(content, path, gzip)
end
然后只需使用通常的 caches_page 类方法。
这样做的缺点是,我还需要破解 expire_page (帖子中没有提到)。如果存在,Rails 也不会使用现有的页面缓存,因为它不会在默认路径中找到它。