Допустим, у вас есть фрагмент страницы, на котором отображаются самые последние сообщения, и срок его действия истекает через 30 минут. Я использую Rails здесь.
<% cache("recent_posts", :expires_in => 30.minutes) do %>
...
<% end %>
Очевидно, что вам не нужно выполнять поиск в базе данных, чтобы получить самые последние сообщения, если фрагмент существует, поэтому вы также сможете избежать этих издержек.
То, что я сейчас делаю, в контроллере выглядит примерно так:
unless Rails.cache.exist? "views/recent_posts"
@posts = Post.find(:all, :limit=>20, :order=>"updated_at DESC")
end
Это лучший способ? Это безопасно?
Одна вещь, которую я не понимаю, это то, почему ключ "recent_posts
" для фрагмента и "views/recent_posts
" при проверке позже, но я придумал это после просмотра memcached -vv
, чтобы увидеть, что он использовал , Кроме того, мне не нравится дублирование ввода вручную "recent_posts
", было бы лучше сохранить это в одном месте.
Идеи