Допустим, у вас есть фрагмент страницы, на котором отображаются самые последние сообщения, и вы истекаете через 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
", было бы лучше сохранить это в одном месте.
Идеи?