Je viens de comparer avec le projet
Minify, et eux ne s’embarrassent pas et compare les contenus de fichiers afin de détecter une mise a jour et agir en fonction.
Un script étant rarement supérieur à 200ko. le md5 du contenu d'un fichier reste la meilleur façon de savoir si son contenu a changé ou pas. Ta solution me semble équivalente dans la finalité (elle ne doit pas couvrir 100% des cas, mais j'avoue ne pas trouver d’exception pour le moment), mais elle est a coup sur plus rapide et moins gourmande que du md5 de ficher entier c'est certains !
J'ai 2 questions:
- Concernant les paramètres: Est-ce que file.name et file.url, ne pourrait pas être regroupé en file.uri, pouvant contenir une chaine relatant d'un path local ou externe. (ex: 'assets/js/mon_script.js' mais aussi '
http://mon.cdn.com/mon_script.js'). Impliquant certes la distinction via php, mais simplifiant la compréhension et l'utilisation du module.
- Concernant la création du md5: ne vaudrait-il pas le coup de simplement faire pour les uri's:
md5(file.timestamp + file.uri + file.filesize)
et pour les blocks de scripts :
md5(smarty.value + block.size).
La chaine reste représentative de l'état du cache a un instant 'T' et ça évite de faire du md5 de md5 !