Lets say you have a fragment of the page which displays the most
recent posts, and you expire it in 30 minutes.  Btw, I'm using rails
here.

<% cache("recent_posts", :expires_in => 30.minutes) do %>
 ...
<% end %>

Obviously you don't need to do the database lookup to get the most
recent posts if the fragment exists, so you should be able to avoid
that overhead too.

What I'm doing now is something like this which seems to work:

unless Rails.cache.exist? "views/recent_posts"
      @posts = Post.find(:all, :limit=>20, :order=>"updated_at DESC")
end


Is this the best way?  Is it safe?

One thing I don't understand is why the key is "recent_posts" for the
fragment and "views/recent_posts" when checking later, but I came up
with this after watching memcached -vv to see what it was using.
Also, I don't like the duplication of manually entering
"recent_posts", it would be better to keep that in one place.

Reply via email to