2008-10-02 14 views
0

Nous avons plusieurs centaines de fichiers javascript dans notre application qui sont actuellement servis non compressés. Une partie de notre solution pour obtenir un peu plus de performance client consiste à réduire nos fichiers javascript. J'ai créé une solution automatisée pour ce faire sur la construction, cependant, lorsque ces nouveaux fichiers sont déployés, l'horodatage des fichiers qui détermine si elle sera renvoyée au client sera modifié. Cela signifie qu'à chaque nouvelle version, tous les fichiers javascript auront un nouvel horodatage. nos clients vont à nouveau télécharger TOUS les fichiers javascript minifiés, et ainsi vaincre l'aspect performance de la minification.Comment déployer des fichiers Javascript minifiés sur un serveur web sans changer l'horodatage du fichier?

Est-ce un problème que quelqu'un d'autre a rencontré? Quelle était votre solution? Avez-vous des fichiers javascript non-minifiés et minimisés séparés utilisés dans vos projets, et n'effectuez pas la minification sur la construction?

Nous avons d'autres solutions à l'esprit (comme ne rechercher que les fichiers modifiés dans le référentiel de contrôle source), mais c'est une question pour laquelle je voulais savoir ce que les autres font.

Répondre

4

Vous allez devoir déterminer quels fichiers ont réellement changé. Ou ne vous inquiétez pas à ce sujet et profitez de l'amélioration que vous obtenez avec les fichiers minifiés. Les clients peuvent ne pas conserver les fichiers dans le cache pendant très longtemps, donc à moins que vous ne mettiez les fichiers à jour très fréquemment, il y a peu de chance d'essayer de gérer le comportement de la mise en cache.

0

Vous pouvez dérouler ces fichiers de script sur une période de temps afin qu'aucune requête utilisateur ne prenne trop de temps. Mais sérieusement, de combien de javascript parlons-nous? Est-ce qu'un re-téléchargement ponctuel du script associé à votre page est vraiment un gros problème? Pensez à tout l'effort que vous allez devoir accomplir pour y arriver et peser cela par rapport aux avantages.

+0

Personnellement, je ne pense pas que ce soit beaucoup, mais lorsque vous multipliez ces Ko sur plusieurs serveurs et des milliers, voire des millions de téléchargements par jour, cela peut conduire à une bande passante substantielle et des économies de serveur. – casademora

2

Vous pouvez écrire un script qui vérifie le hachage CRC ou MD5 de chaque fichier à partir des dossiers source et cible, et effectuer uniquement l'écrasement si le fichier a été modifié. Cela permettrait de préserver les horodatages des fichiers qui n'ont pas changé, vous donnant le comportement de mise en cache souhaité. De même, vous pouvez enregistrer l'horodatage précédent, effectuer l'écrasement, puis utiliser la commande tactile (en supposant que ces fichiers se trouvent sur un système Unix) pour remettre l'horodatage à sa valeur d'origine. La première option est probablement préférable plutôt que de simplement fixer l'horodatage à la même valeur tout le temps, car cela peut signifier que certains clients ne récupèrent pas un fichier JS modifié pendant un certain temps parce que le serveur prétend qu'il n'a pas pas changé.