HTTP/прокси-кеширование с помощью memcached

Какова общая наилучшая практика, чтобы справиться с чем-то вроде этого.

##Post controller

def show
   @post = get_from_memcache
end

##show.html.erb
<div><%= post.body%></div>
<div><%= post.created_at%></div>
<div><%= post.category%></div>
<div><%= Post.favorites_count%></div>

get_from_memcache возвращает объект @post из кеша, срок действия которого в основном не истекает, потому что после создания сообщения его тело, категория, место создания и т. д. остаются прежними.

Однако, с моей точки зрения, я вызываю другой метод favourites_count, который собирает количество избранных сообщений из кэша памяти, и это избранное продолжает меняться.

Конечно, это упрощение, есть несколько полей, которые меняются.

Теперь, если бы я реализовал какое-то HTTP-кеширование, мне нужно было бы сделать fresh_when или stale? в моем методе контроллера (show), который по существу не будет отображать представления и, следовательно, обновленный счетчик избранного, если только я не использую etag, который включает в себя счетчик избранного и другие динамические поля, и в этом случае это как бы побеждает цель, потому что эти поля регулярно меняются .

Как мне справиться с этой ситуацией? Итак, я могу воспользоваться прокси-сервером, но при этом обновлять определенные динамические поля на странице? Одна вещь, о которой я могу думать, это ajax-вызовы других действий контроллера для обновления этих полей после загрузки страницы, но это может быть уродливо.

Любые другие рекомендации?


person badnaam    schedule 01.10.2010    source источник


Ответы (1)


У вас действительно есть 1 жизнеспособный вариант, если вы хотите использовать кеширование страниц — загрузите этот номер с помощью ajax.

Однако для этого вам не нужно проходить через стек rails — просто напишите Metal, они очень быстрые.

person glebm    schedule 12.10.2010