рельсы свежие, когда / несвежие? использование - PullRequest
4 голосов
/ 19 сентября 2010

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

1 Ответ

0 голосов
/ 03 мая 2014

Если у вас есть специальная обработка ответа, такая как в методе show, тогда используйте stale?помощник.Если у вас нет специальной обработки ответа, такой как метод редактирования, и используется механизм рендеринга по умолчанию (т. Е. Вы сами не используете response_to или не вызываете render), тогда используйте fresh_when.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...