2009-06-21 6 views
0

Je récupère et manipule du contenu XML à partir de Twitter et de Flickr dans mon application rails. Les résultats apparaissent sur chaque page et l'analyse est gérée dans le contrôleur d'application avec Hpricot et open-uri.La mise en cache d'action ne fonctionne pas

Ceci est ma première expérience avec la mise en cache d'actions et cela ne semble pas fonctionner. Je suis en mode dev en utilisant WEBRick. Tout ce qui est approprié est défini sur true dans development.rb.

Voici ce qui est dans le contrôleur:

before_filter :twitter, :flickr 
    caches_action :twitter, :flickr 

Rien ne montre dans/tmp/cache, et il est clair que hpricot fait c'est chose à chaque chargement de page.

Merci d'avance.

Répondre

2

La mémoire cache par défaut est de la mémoire pour l'action et la mise en cache des fragments, donc rien n'apparaîtra dans tmp/cache. Vous pouvez le changer en file_store à des fins de débogage.

Je recommanderais gem d'installer mongrel et d'utiliser cela à la place de webrick en mode développement. C'est plus rapide et donne une meilleure information en un coup d'œil que webrick.

Lorsque des actions sont mises en cache, toutes les conditions avant l'exécution des filtres. Ce qui ressemble à ce que vous faites est d'exécuter vos actions sur Twitter et Flickr comme de simples méthodes dans le before_filter. Cela n'invoquera pas la mise en cache. Vous devriez regarder dans la mise en cache des fragments et changer votre contrôleur pour être:

class SomeController 
    before_filter :twitter, :flickr 

    protected 
    def twitter 
    unless read_fragment('twitter') 
     ... do stuff ... 
    end 
    end 
end 

#_twitter.erb 
<% cache('twitter') do %> 
    render the relevant stuff 
<% end %> 
+0

+1 Quelque chose de similaire a fonctionné pour moi dans le passé. – Swanand

Questions connexes