在我的 post_index 操作中,我生成了不同类型的“@posts”,例如..
def index
case params[:listing_type]
when "all"
@posts = get_all_post_from_memcached
when "most_popular"
@posts = get_all_most_popular_from_memcached
respond_to do |format|
format.html
format.js #for ajax reqeusts
format.xml #for rss etc
end
end
end
##updated
def index
case params[:listing_type]
when "all"
#the key here is teh same key I used for memcached
if stale?(:etag => 'all_posts_key')
@posts = get_all_post_from_memcached
else
head :not_modified and return
end
when "most_popular"
if stale?(:etag => 'most_popular_key')
@posts = get_all_most_popular_from_memcached
else
head :notified and return
end
respond_to do |format|
format.html
format.js #for ajax reqeusts
format.xml #for rss etc
end
end
end
据我了解
fresh_when
需要一个 etag
,如果不同类型的渲染没有区别,则使用它(在我的情况下,渲染根据 html 或 ajax 不同)和
stale?
也采用 etag
并包围 response_to 块。在这种情况下,
etag
将根据不同的列表类型而不同。但是在这里使用 fresh_when
或 stale?
的方式似乎没有太大的灵活性?谢谢
更新。我稍微更改了原始块,现在出现双重渲染错误我做错了什么,“头:通知并返回”应该只返回标题而不是触摸
respond_to
块吗? 最佳答案
如果您有像 show 方法中那样的特殊响应处理,那么使用 stale? helper 。如果你没有像 edit 方法那样的特殊响应处理并使用默认渲染机制(即,你没有使用 response_to 或自己调用渲染),那么使用 fresh_when。
关于ruby-on-rails - rails fresh_when/stale?用法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3744090/