J'ai une action de contrôleur qui pourrait bénéficier de la mise en cache. Toutefois, lorsque j'active la mise en cache des actions via l'habituel:Est-il possible de faire fonctionner caches_action pour une méthode de contrôleur de rails accessible via HTTP POST?
caches_action :myaction, :expires_in=>15.minutes
La mise en cache n'est pas appelée. Cela semble dû au fait que l'action est appelée à l'aide d'un HTTP POST. Pour les actions similaires invoquées à l'aide de HTTP GET, la mise en cache fonctionne correctement.
Je réalise que l'utilisation d'un POST pour cette action n'est probablement pas un grand style et brise les conventions de routage des ressources - sans doute c'est aussi pourquoi la réponse n'est pas mise en cache, même si elle pourrait l'être. Cependant pour l'instant je suis coincé avec lui car c'est ce que le client fait actuellement et je ne peux pas le changer facilement.
Alors, existe-t-il un moyen de forcer la mise en cache pour cette méthode même si elle est accessible via POST?
edit: Je devrais peut-être clarifier que le POST n'a pas d'effets secondaires, donc il est sûr de cacher l'action. Il aurait vraiment dû être un GET en premier lieu, il n'est tout simplement pas et ne peut pas être facilement changé pour le moment. De plus, cela n'a pas d'importance pour que les navigateurs ou les proxies ne mettent pas en cache la réponse.
Les paramètres sont identiques - y a-t-il d'autres données avec le message (en-têtes?) qui pourraient le faire ne pas mettre en cache? Je ne les vois pas dans les journaux, mais le client peut-il définir des en-têtes pour contourner le cache? Je vais essayer la suggestion de Rails.cache. Pour rack/métal ai-je besoin de rails 2.3? Je suis sur 2.2.2 actuellement. – frankodwyer
Voir les modifications ci-dessus pour vos commentaires. – ADAM