J'essaie d'optimiser les performances d'un site en consolidant et en compressant les fichiers CSS et JS. Ma question porte davantage sur les étapes (concrètes) pour y parvenir, étant donné une situation réelle à laquelle je faisais face (cela devrait être typique chez d'autres développeurs, cependant).
Ma page fait référence à plusieurs fichiers CSS et JS comme les suivants:
<!--
It's easier to work on smaller files during development.
Hence, the multiple CSS and JS files.
-->
<link type="text/css" rel="stylesheet" href="/css/main.css" />
<link type="text/css" rel="stylesheet" href="/css/secondary-1.css" />
<link type="text/css" rel="stylesheet" href="/css/secondary-2.css" />
<script type="text/javascript" src="/scripts/js/main.js"></script>
<script type="text/javascript" src="/scripts/js/adapter/adapter.js"></script>
<script type="text/javascript" src="/scripts/js/adapter/title-adapter.js"></script>
Pour la version de production, j'aimerais combiner les 3 fichiers CSS en un seul et le réduire en utilisant par exemple YUI Compressor . Mais alors, je devrais mettre à jour toutes les pages qui ont besoin de ces 3 fichiers pour faire référence au CSS nouvellement minifié. Cela semble sujet aux erreurs (par exemple, vous supprimez et ajoutez des lignes dans de nombreux fichiers). Une autre approche moins risquée? Le même problème pour les fichiers JS.
Réponses:
Vérifiez minify - il vous permet de combiner plusieurs fichiers js, css en un seul en les empilant dans une URL, par exemple
Nous l'avons utilisé pendant des années et il fait un excellent travail et le fait à la volée (pas besoin d'éditer les fichiers).
la source
Je pense que le compresseur YUI est le meilleur qui soit. Il minimise JS et CSS et supprime même les
console.log
déclarations que les gens utilisent pour le débogage JavaScript de bas niveau.Découvrez à quel point c'est facile .
Vous pouvez le démarrer dans une tâche ant et donc l'inclure dans vos hooks de post / pré-commit si vous utilisez svn / git.
MISE À JOUR: De nos jours, j'utilise grunt avec les contributions concat, minify & uglify. Vous pouvez l'utiliser avec un observateur afin de créer de nouveaux fichiers minifiés en arrière-plan chaque fois que vous modifiez votre source. La contribution uglify supprime non seulement les journaux de la console, mais également les fonctions et propriétés inutilisées.
Consultez ce didacticiel pour un bref aperçu.
MISE À JOUR: Aujourd'hui, les gens prennent du recul par rapport à grunt et à son prédécesseur "gulp" et utilisent npm comme outil de construction. Lisez-le ici .
MISE À JOUR: Alors maintenant, les gens utilisent du fil pour exécuter npm. Pas étonnant; l'icône de fils est un chat. La plupart des frameworks actuels utilisent webpack pour regrouper les ressources dans des packages, qui s'occupent également de la minification .
la source
Tout d'abord, je dirais que vous devriez avoir un en-tête commun. Il ne sera donc pas nécessaire de changer tous les en-têtes à tout moment chaque fois que nécessaire. C'est une bonne pratique d'avoir un seul en-tête ou 2-3. Ainsi, selon vos besoins, vous pouvez modifier votre en-tête. Ainsi, chaque fois que vous souhaitez étendre votre application Web, ce sera moins risqué et fastidieux.
Vous n'avez pas mentionné vos environnements de développement. Vous pouvez voir qu'il existe de nombreux outils de compression répertoriés pour différents environnements . Et vous utilisez un bon outil ieYUI Compressor.
la source
J'ai fini par utiliser CodeKit pour concaténer mes fichiers CSS et JS. La fonctionnalité que je trouve vraiment utile est la possibilité de faire la concaténation lors de la sauvegarde du fichier; car il surveille les actifs CSS / JS respectifs. Une fois que je les ai correctement combinés, par exemple à 1 fichiers CSS et 1 JS, tous les autres fichiers peuvent simplement faire référence à ces 2.
Vous pouvez même demander à CodeKit d'effectuer une minification / compression à la volée.
Clause de non-responsabilité: je ne suis en aucun cas affilié à CodeKit. Je l'ai trouvé au hasard sur le Web et il a été un excellent outil dans mon processus de développement. Il est également livré avec de bonnes mises à jour depuis que je l'ai utilisé pour la première fois il y a plus d'un an.
la source
Astuce rapide pour les utilisateurs de Windows, si vous souhaitez uniquement concater des fichiers:
Ouvrez une cmd à l'endroit souhaité et dirigez simplement vos fichiers vers un fichier en utilisant " type "
ex:
Si l'ordre de vos scripts est important, vous devez taper explicitement les fichiers, dans l'ordre souhaité .
J'utilise ceci dans un fichier bat pour mes projets angular / bootstrap
la source
C'est l'année 2015 dans la rue et le moyen le plus simple pour imo est d'utiliser gulp - http://gulpjs.com/ . La réduction du code à l'aide de gulp-uglify pour les scripts js et de gulp-minify-css pour le css est très simple. Gulp vaut vraiment la peine d'essayer
la source
Je ne vois pas que vous mentionnez un système de gestion de contenu (Wordpress, Joomla, Drupal, etc.) mais si vous utilisez un CMS populaire, ils ont tous des plugins / modules disponibles (options gratuites également) qui minifieront et mettront en cache vos css et js.
L'utilisation d'un plugin vous donne la possibilité de garder les versions non compressées disponibles pour l'édition, puis lorsque des modifications sont apportées, le plugin inclut automatiquement vos modifications et recompresse le fichier. Assurez-vous simplement de choisir un plugin qui vous permettra d'exclure des fichiers (comme un fichier js personnalisé) au cas où il casse quoi que ce soit.
J'ai essayé dans le passé de conserver ces fichiers manuellement et cela se transforme toujours en cauchemar de maintenance. Bonne chance, j'espère que ça t'a aidé.
la source
Pour les personnes qui veulent quelque chose d'un peu plus léger et flexible, j'ai créé js.sh aujourd'hui pour résoudre ce problème. C'est un simple outil de ligne de commande ciblé vers les fichiers JS qui pourrait facilement être modifié pour prendre également en charge les fichiers CSS. Avantages:
<script>
balises que vous pouvez inclure le cas échéantjs.sh -u yourname
Cela pourrait nécessiter des améliorations, mais c'est mieux pour mon cas d'utilisation que toutes les autres solutions que j'ai vues jusqu'à présent.
la source
La première étape de l'optimisation est la minimisation des fichiers. (Je recommande fortement GULP pour la minimisation et l'optimisation. Sa solution de surveillance simple, son installation et tous les fichiers sont compressés en même temps. Prend en charge tous les CSS, JS, less, sass, etc ...)
OU Solution old school:
1) En général, en tant que processus d'optimisation, pour optimiser les performances d'un site, essayez de fusionner tous les CSS dans un seul fichier et de compresser le fichier à l'aide de Compass . De cette façon, vos multiples requêtes au CSS statique seront remplacées par une seule.
2) Problème de plusieurs JS que vous pouvez résoudre en utilisant CDN (ou Google Hosted Libraries) afin que les demandes soient transmises à un autre serveur pas le vôtre. De cette façon, le serveur n'attend pas que la requête précédente se termine avant d'envoyer la prochaine.
3) Si vous avez votre propre JavaScript stocké localement, réduisez chaque fichier en utilisant le plugin Brackets "Compresser JavaScript". Il s'agit essentiellement d'un clic pour compresser JavsScript. Brackets est un éditeur gratuit conçu pour CSS et JS, mais peut être utilisé pour PHP et d'autres langages. Il y a beaucoup de plugins à choisir pour les développeurs front-end et back-end. En général, "un clic" pour exécuter toutes ces commandes (jusqu'à présent multiples). Btw, Brackets a remplacé mon très cher Dreamweaver;)
3) Essayez d'utiliser des outils comme Sass , Compass, moins pour minimiser votre CSS.
Remarque: même sans utiliser le mixage SASS ou les variables, votre CSS sera compressé (il suffit d'utiliser simplement du CSS pur et la commande "watch" de Compass le compressera pour vous).
J'espère que ça aide!
la source
Si vous faites un prétraitement sur les fichiers que vous servez, vous voudrez probablement mettre en place un système de construction approprié (par exemple un Makefile). De cette façon, vous avez des fichiers source sans duplication, et chaque fois que vous effectuez une modification, vous exécutez «make» et il met à jour tous les fichiers générés automatiquement. S'il existe déjà un système de construction en place, découvrez comment il fonctionne et utilisez-le. Sinon, vous devrez en ajouter un.
Alors tout d'abord, découvrez comment combiner et réduire vos fichiers à partir de la ligne de commande (la documentation YUICompressor couvre cela). Désignez un répertoire pour les éléments générés automatiquement, distinct de ceux sur lesquels vous travaillez mais accessibles au serveur Web, et faites-y la sortie, par exemple gen / scripts / shared.js. Mettez les commandes que vous avez utilisées dans un Makefile et relancez 'make' chaque fois que vous avez fait une modification et que vous voulez qu'elle prenne effet. Ensuite, mettez à jour les en-têtes dans d'autres fichiers pour pointer vers les fichiers combinés et minifiés.
la source
Dans mon projet symfony, je fais quelque chose comme ça
Lorsque la version de développement est prête pour la production, j'utilise ce script pour combiner tous les fichiers css et remplacer le contenu de
min.css
.Mais cette solution ne fonctionne que si les mêmes fichiers css sont inclus dans toutes les pages.
la source
Vous pouvez utiliser le module de nœud cssmin qui est construit à partir du célèbre compresseur YUI
la source
Tous les utilitaires plus rapides se trouvent ici
la source