gpt4 book ai didi

ruby-on-rails - 如何将 caches_action 配置为适用于多种格式?

转载 作者:行者123 更新时间:2023-12-04 07:29:20 25 4
gpt4 key购买 nike

我有一个 rails 操作,它响应各种格式的请求,包括 AJAX 请求,例如:

   def index
# do stuff
respond_to do |format|
format.html do
# index.html.erb
end
format.js do
render :update do |page|
page.replace_html 'userlist', :partial => "userlist", :object=>@users
page.hide('spinner')
page.show('pageresults')
end
end
end
end

我已将此操作设置为使用 memcached 进行缓存:

 caches_action :index, :expires_in=>1.hour, :cache_path => Proc.new { |c| "index/#{c.params[:page]}/#{c.request.format}" }

这种模式似乎可以很好地缓存 HTML 结果,但不适用于 JS 结果。当 JS 部分不是来自缓存时,它总是工作正常。但是,当缓存命中时,页面不会更新。

什么可能导致此问题,解决方法是什么?

更新:深入研究它看起来像是来自缓存的请求获得 mime 类型“text/html”而不是“text/javascript”。但是我不确定如何解决这个问题——这是 memcached 的一个怪癖吗? ( rails 2.3.2)

最佳答案

类似于 voldy 的回答,但使用的是未弃用的方法。

caches_action :show,
:cache_path => :post_cache_path.to_proc,
:expires_in => 1.hour

protected

def post_cache_path
if request.xhr?
"#{request.url}.js"
else
"#{request.url}.html"
end
end

关于ruby-on-rails - 如何将 caches_action 配置为适用于多种格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1483847/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com