fresh_when/stale? usage

In my post_index action, I generate different kinds of "@posts" like..

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

From what I understand fresh_when takes a etag, and it is to be used if there is no difference in different kinds of rendered (in my case the rendering is different based on html or ajax)

and

stale? also takes an etag and surrounds the respond_to block.

In this case the etag will be different based on the different listing types. But it seems there isn't much flexibility in the way fresh_when or stale? can be used here?

Thanks

##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

update. I changed the original block a little and now get a double render error what am I doing wrong, should "head :notified and return" just return the header and not touch the respond_to block?

The stale & fresh blocks already will send not modified back to the client. Since you are also sending it, you get a double render.