我有一个相同的 Rails 应用程序,其中包含许多域名和细微的 UI 差异。每个域可能有不同的语言环境(en、es、fr 等)。
我caches_page
用来缓存users
控制器的所有对象。我已经尝试了这个解决方案,并稍作修改以使用域和语言环境而不是子域。
def self.page_cache_path(path,extension)
MyApp::Application.config.action_controller.page_cache_directory + '/cache' + @root_site.to_s + "/" + path + extension
end
def cache_page(content = nil, options = nil, gzip = Zlib::BEST_COMPRESSION)
path = [@root_site, I18n.locale].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
这段代码似乎可以很好地写入缓存文件,将域名作为第一个文件夹:
Write page /Users/user/Sites/myapp/public/cache/domain1.com/en/users/john.html (1.7ms)
Completed 200 OK
我看到的问题是当我访问任何缓存页面时它没有检索缓存:
Started GET "/users/john" for 127.0.0.1 at 2013-01-16 19:04:18 -0200
Processing by UsersController#show as HTML
...
Write page /Users/user/Sites/myapp/public/cache/domain1.com/en/users/john.html (1.7ms)
Completed 200 OK
在我的users
控制下,我只有这个
caches_page :show
任何人都知道是什么阻止了从缓存文件中读取以及如何解决它?