2010-10-01 6 views
0

Quelle est la meilleure pratique générale pour faire face à quelque chose comme ça ..http/cache proxy avec 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> 

Le get_from_memcache retourne un objet @post d'un cache qui ne fond expire pas, parce qu'une fois un poste est créé, c'est corps, catégorie, créé à etc reste le même.

Cependant, à mon avis, j'appelle une autre méthode favorites_count qui recueille le nombre de favoris de posts de memcache et ce favori continue de changer.

Ceci est une simplification bien sûr, il y a quelques champs qui changent.

Maintenant Si je devais implémenter une sorte de mise en cache http alors je devrais faire un fresh_when ou éventé? dans ma méthode controller (show), qui ne rendrait essentiellement pas compte des vues et donc des favoris mis à jour, sauf si j'utilise un etag qui englobe le nombre favori et d'autres champs dynamiques, auquel cas il bouscule le but car ces champs changent régulièrement .

Comment gérer cette situation? Je peux donc profiter d'un proxy mais garder certains champs dynamiques dans la page mise à jour? Une chose que je peux penser est des appels ajax à d'autres actions de contrôleur pour mettre à jour ces champs après le chargement de la page, mais cela pourrait laid.

D'autres recommandations?

Répondre

0

Vous avez vraiment une option viable si vous souhaitez utiliser la mise en cache de la page - charger ce nombre avec ajax

Cependant, vous n'avez pas besoin de passer par des rails pile pour que - il suffit d'écrire un métal, ils sont très rapides.