J'ai expérimenté la mise en cache de fragments de poupées russes sur une application Rails, plus précisément sur sa page principale Dashboard. C'est la première page que l'utilisateur voit après qu'il se connecte et est un excellent candidat pour Russian Doll, car il contient de nombreux éléments imbriqués. La mise en cache fonctionne bien dans les situations où l'utilisateur effectue lui-même des modifications nécessitant que l'application restaure le tableau de bord. Le temps de chargement avec la mise en cache est environ 4x plus rapide que le rendu de la page entière.Comment garder les caches au chaud en utilisant la mise en cache de Russian Doll?
Il existe cependant des situations dans lesquelles les données sont modifiées par le système. Par exemple, chaque nuit, nous mettons à jour toutes les valeurs par le nouveau taux de change du jour précédent. Cela expirera automatiquement la plupart des fragments dans le tableau de bord et le lendemain, l'utilisateur utilisera un cache froid lors de la connexion.
Il est possible de régénérer ces caches fragmentés après les mises à jour du système afin de les garder au chaud. Je suppose que je pourrais manuellement les fragments après toute mise à jour du système, mais je devrais gérer les clés et les dépendances manuellement. (J'utilise actuellement la gemme cache_digest
, ce qui est très pratique.).
Des idées?
Cela fonctionne certainement pour les éléments plus petits. Je crois que DHH fait quelque chose de similaire dans son message original. Cependant, dans notre cas, les changements peuvent impliquer des calculs plus compliqués (pas seulement des taux de change) et des fragments entiers peuvent être inclus ou supprimés. Je suppose que cela pourrait encore être fait, mais je devrais passer trop de logique dans JS. – Luciano