2014-06-22 2 views
1

Pour améliorer les performances de mes Rails 4.0.2 app, je voudrais mettre en cache la sortie de certains de mes pages statiques:Quelle est la meilleure façon de mettre en cache des pages statiques dans Rails 4?

class PagesController < ApplicationController 

    def home 
    end 

    def about_us 
    end 

    def contact 
    end 

end 

Dans le Rails Guide on Caching il est dit que « la page Mise en cache a été retiré de Rails 4 "et déplacé dans une gemme. Dans le gem description il est dit, cependant, qu'il sera maintenu seulement jusqu'à Rails 4.1. Certains other observers déconseillent également l'utilisation de Mise en cache des pages et approuvent Russian doll caching à la place.

Alors, quelle est la meilleure façon de mettre en cache un tas de pages statiques qui ne seront jamais réellement dans la base de données et ne changeront (légèrement) que si un utilisateur se connecte?

Merci pour vos suggestions.

+0

Tintin81, je suis face au même problème pour le moment. Quelle était votre solution? Je suppose qu'il y a une sorte de cache HTTP, mais comment et quand expire-t-on la page? –

Répondre

3

Vous pouvez toujours utiliser la mise en cache de fragments pour vos pages statiques, bien que les avantages soient évidemment plus visibles avec les pages dynamiques/DB. Cela vaut la peine d'envisager de le faire si vous avez beaucoup de rendu partiel ou une vision coûteuse. Il suffit de terminer le modèle de votre page avec:

# about_us.html.erb 
<% cache 'about_us' do %> 
    ... 
<% end %> 

la première fois que vous frappez la page dans un environnement où config.action_controller.perform_caching = true, il va générer le fragment (qui dans ce cas est votre page entière), et il va servir que la prochaine fois que vous le rechargerez. Le cache digest sera invalidée lorsque le modèle est modifié:

Le modèle de résumé qui est ajouté à la clé de cache est calculée en prenant un md5 du contenu de l'ensemble du fichier modèle. Cette garantit que vos caches expireront automatiquement lorsque vous modifiez le fichier modèle .

http://api.rubyonrails.org/classes/ActionView/Helpers/CacheHelper.html

Questions connexes