同じ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
キャッシュファイルからの読み取りを妨げているものとその解決方法を知っている人はいますか?