Bonjour,

As-tu envisager de prendre le problème à l'envers ? :-)
Au lieu de partir dans le développement d'une usine à gaz, tu ne pourrais pas demander à tes clients de versionner leur bandeau de pub / images / fichiers statiques ? 
Tout est possible à ce niveau, rajouter "-vXXX" à la fin du fichier, le md5 du fichier etc etc... 
Comme ça tu leur laisse gérer totalement leur "cache" via une mise à jour de leur code / CSS.

Le problème de vider le cache est que ça peut prendre un temps fou, lors de l'action, mais aussi pour la validation de ton script.

Personnellement, c'est ce qu'on fait ici chez Watchever (service de SVOD allemand, concurrent européen de Netflix), donc autant te dire que la gestion du cache, c'est une partie de mon quotidien. Au final avec cette solution on a gagné du temps et de la souplesse !

Hésite pas si tu as des questions.

++

Le 10 février 2015 11:47, Julien Escario <escario@azylog.net> a écrit :
Bonjour,
Maintenant que je parviens à gérer la durée de vie du cache nginx, je me heurte à un nouveau problème : son invalidation conditionnelle.

Je m'explique : nous avons mis en place un frontal qui ne fait que du cache de ressources statiques avec nginx. Ca soulage les backend web et c'est plus rapide (on met le cache en ramdisk et on regarde pour du memcached).

Tous contents, on est partis sur des valeurs astronomiques de cache des ressources statiques (genre 7 jours). Rapidement, on s'est fait engueulés parce que machin qui avait rajouté trois couleurs sur son bandeau de pub devait attendre 7 jours pour que ce soit visible.

Alors on a rajouté la directive proxy_cache_bypass qui permet d'invalider une ressource cachées via une requête spécifique.

Très bien, sauf qu'un jour on nous a demandé de pouvoir invalider le cache d'un grand nombre de fichiers d'un coup et on a dû scripter le truc avec du curl.

J'aimerais bien passer la seconde là dessus en invalidant le cache d'un fichier statique automatiquement lorsque le fichier change sur le disque.
La première qui me vient en tête est inotify : on monitore le filesystem et on génère une requête d'invalidation à chaque fois qu'un fichier statique change (avec le timestamp unix).

Ca paraît faisable sur le papier mais je me demande si mon idée ne va pas se transformer en usine à gaz.

Pour le moment, on a mis un cache à 5 min mais du coup, le cache commence gentiment à perdre de son intérêt, à part en cas de pic de consultation des sites.

Du coup, est-ce quelqu'un a déjà rencontré/résolu ce type de problématique et peut partager ses conclusions ?

Merci d'avance,
Julien
_______________________________________________
Liste de diffusion du FRsAG
http://www.frsag.org/



--
Ludovic Cartier