В своем действии 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
?