我有两个基本上呈现同一页面的网址。根据{{1}},可以通过javascript轻松执行细微差异。无论如何,即使路由指向相同的location.href
,第二条路线也不使用前者缓存的页面。我怎样才能做到这一点?
答案 0 :(得分:0)
我的网站对你有一个有趣的要求 - 由于主题不同,可以从同一个网址返回不同的页面。所以我提出了一个名为“匿名缓存”的解决方案,我创建了自己的缓存密钥,包括额外的参数。但我认为这个解决方案可以为您提供一些线索。
module AnonymousCache
def self.included(base)
base.extend(ClassMethods)
end
module ClassMethods
def caches_page_for_anonymous(*pages)
before_filter :check_cache_for_anonymous, :only => pages
after_filter :cache_for_anonymous, :only => pages
end
end
def check_cache_for_anonymous
return unless perform_caching
return if logged_in?
path = anon_cache_path
if content = Rails.cache.read(path)
send_data(content,
:type => 'text/html;charset=utf-8', :disposition => 'inline')
return false
end
end
def cache_for_anonymous
return unless perform_caching
return if logged_in?
path = anon_cache_path
@expires_in ||= 1.hour
self.class.benchmark "Cached page for guest: #{path}" do
Rails.cache.write(path, response.body, :expires_in => @expires_in.to_i)
end
end
protected :check_cache_for_anonymous
protected :cache_for_anonymous
private
def anon_cache_path()
path1 = File.join(request.host, current_theme, request.path)
q = request.query_string
path1 = "#{path1}?#{q}" unless q.empty?
path1
end
end
anon_cache_path
方法是我为页面缓存制作规范键的方法。您可以看到我在其中加入了current_theme
。
您可以复制此内容并根据您的要求更改anon_cache_path
。