Thème > Développement
> > > Fusionner des fichiers via le fichier .htaccess

Fusionner des fichiers via le fichier .htaccess

Dans le cadre de l'optimisation de la rapidité de l'affichage des pages web. Je suis tombé sur une propriété du fichier .htaccess qui permet de fusionner plusieurs fichiers en un seul, via le serveur Apache.
Le concept me semble intéressant notamment pour fusionner des fichier CSS ou des fichiers JS.

Par exemple prenons le cas des JS. Sur mes sites je charge modernizr, jquery, swfobject et mon propre fichier JS. L'idée est de ne charger qu'un seul fichier regroupant les 4 fichiers.

Comment faire ?
D'abord mettez tous vos fichiers js à fusionner dans le même répertoire, que nous nommerons pour l'exemple "js".
Créez y, un fichier que nous appellerons "framework.js" et mettez dans ce dernier le code suivant :
Exemple de code :
<!--#include file="modernizr.js" -->
<!--#include file="jquery.js" -->
<!--#include file="swfobject.js" -->
<!--#include file="monscript.js" -->

Dans le dossier "js" créez un fichier .htaccess et insérez le code suivant :
Exemple de code :
<FilesMatch "framework.js$">
  Options +Includes
  SetOutputFilter INCLUDES
</FilesMatch>

Il ne vous reste plus qu'a appeler le fichier framework.js pour voir le résultat.

Certain dirons, qu'il sufit de mettre dans le fichier "framework.js" l'ensemble des codes js de modernizr, jquery, swfobject et de monscript.js pour arriver au même résultat, c'est vrais.
j'y vois plusieurs avantages :
- dans l'explorateur on voit tous les fichiers.
- dans monscript.js, mon éditeur ne m'affiche que les fonctions du fichier et pas celles de modernizr ou de jquery.
- je trouve plus facile, de changer un fichier, que d'aller changer un fragment de code.
- et dans mon svn c'est plus facile, avoir les modifications
Mais bon, c'est à vous de voir.

L'inclusion de fichier via le fichier .htaccess et le serveur Apache, va bien plus loin que mon petit exemple. je vous laisse donc le soin de découvrir le système d'inclusion Apache.
En savoir plus : http://httpd.apache.org/docs/2.2/fr/mod/mod_include.html