Cache


#1

Bonjour,

Je souhaiterais mettre en place un cache de page. Dans l’idéal, je
voudrais que la page d’accueil qui liste un ensemble d’articles soit
mise en cache. Le problème est que l’application en question gère
plusieurs URL et que le contenu en dépend. Aussi, il faudrait mettre en
cache autant de pages en cache que d’URL. Pensez-vous que cela soit
possible avec le perform_caching de ActionController ?

Je reste ouvert à toute suggestion,

Merci d’avance,

Julien


#2

Le 17 avr. 07 à 14:39, Julien B. a écrit :

Bonjour,

Je souhaiterais mettre en place un cache de page. Dans l’idéal, je
voudrais que la page d’accueil qui liste un ensemble d’articles
soit mise en cache. Le problème est que l’application en question
gère plusieurs URL et que le contenu en dépend. Aussi, il faudrait
mettre en cache autant de pages en cache que d’URL. Pensez-vous que
cela soit possible avec le perform_caching de ActionController ?

Bonjour,

Out of the box le cache statique rails n’est simple qu’avec des urls
sans paramètre dynamique.

La raison est simple, pour être ultra performant le cache statique
doit bypasser rails, et donc ce qui se passe au niveau du frontend
web (quand il est bien configuré) c’est que lorsqu’une url est
demandé, le serveur web vérifie qu’un fichier correspondant est ou
non sur le disque (exemple pour site.com/mon_action/mon_param il y a
un check sur le fichier public/mon_action/mon_param.html).

Résultat si tu veux utiliser le cache rails sans modification il faut
des “url propres”. C’est à dire remplacer site.com/mon_action/
mon_param?param1=‘toto’&param2=‘tata’ par site.com/mon_action/
mon_param/toto/tata ou avec un peu plus de travail site.com/
mon_action/mon_param/with_toto_and_tata ( site.com/mon_action/
mon_param/with_toto_and_tata ).

Au final tu auras un fichier en cache par url, et il faudra bien
faire attention dans les sweepers d’effacer l’ensemble de la
collection des caches correspondant aux diverses options de
visualisation (en gros le répertoire mon_action/mon_param + le
fichier mon_action/mon_param.html). Evidemment ca n’a d’intérêt que
si la trafic arrive sur un nombre limité de paramètre.

Renaud_______________________________________________
Railsfrance mailing list
removed_email_address@domain.invalid
http://lists.rubyonrails.fr/mailman/listinfo/railsfrance


#3

Merci Renaud pour ta réponse.

Penses-tu qu’il soit possible d’avoir des pages en cache avec des urls
comme celle-ci ?

site1.net/
site2.net/
site3.net/

sachant qu’il s’agit à chaque fois su même controlleur et de la même action.

Julien


#4

Le 18 avr. 07 à 09:32, Julien B. a écrit :

Merci Renaud pour ta réponse.

Penses-tu qu’il soit possible d’avoir des pages en cache avec des
urls comme celle-ci ?

site1.net/
site2.net/
site3.net/

Oui je le fais, tu as deux possibilités qui dépendent de ton
implémentation:

  • Si tu check le domaine dans un prepend before filter et dans ce cas
    il te faut un vhost par domaine et ca demande un peu de config sur le
    serveur web et de modifier le rep de cache rails
  • Soit tu utilises les routes de facon un peu maline pour avoir ton
    domaine en temps que params et dans ce cas c’est built-in mais ca
    demande de tweaker le routing et les helper qui lui sont lié

J’imagine que tu es dans la première situation alors il te faut
plonger dans la config de ton serveur web afin qu’il check les pages
statics dans un répertoire dépendant du hostname. C’est plus ou moins
facile dépendant de ton frontend web. Petite remarque dans rails la
config du répertoire de cache n’est pas thread safe donc attention.

Renaud _______________________________________________
Railsfrance mailing list
removed_email_address@domain.invalid
http://lists.rubyonrails.fr/mailman/listinfo/railsfrance