CJO - CSS AND JAVASCRIPT OPTIMIZER

cs_MATHIS49 Messages postés 368 Date d'inscription vendredi 10 octobre 2003 Statut Membre Dernière intervention 14 mai 2010 - 10 août 2007 à 22:05
cs_zeguizmo Messages postés 138 Date d'inscription vendredi 1 août 2003 Statut Membre Dernière intervention 16 juillet 2009 - 25 janv. 2008 à 11:20
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/43731-cjo-css-and-javascript-optimizer

cs_zeguizmo Messages postés 138 Date d'inscription vendredi 1 août 2003 Statut Membre Dernière intervention 16 juillet 2009
25 janv. 2008 à 11:20
Salut,

Désolé de répondre si tardivement,j'ai résolu le probleme et oublié ce post.

Je parlais du temps pour récupérer le fichier présent dans le cache, d'ou le probleme !

Les tests que j'effectuais étaient réalisés a l'aide d'un xamp sous windows .. apres reboot du serveur, les temps se sont calmés. Donc le serv devait etre en train de péter un pti plomb :) Depuis ca lui est arrivé deux trois fois à mon xamp de me jouer des tours de ce genre, mais un reboot du pc (et donc du serveur) regle le probleme.

Merci a toi, c'est très utile et il est plus performant que le mien :)

Bonne continuation.
cs_x_mec Messages postés 63 Date d'inscription mercredi 25 août 2004 Statut Membre Dernière intervention 19 février 2008
11 nov. 2007 à 11:20
Tu parle du temps pour executer la compression + mise en cache ou du temps pour recuperer le fichier déjà present en cache (car tout l'interet est là) ?

Moi j'ai des temps "normaux" ...
cs_zeguizmo Messages postés 138 Date d'inscription vendredi 1 août 2003 Statut Membre Dernière intervention 16 juillet 2009
10 nov. 2007 à 11:09
Salut,

J'ai testé ton code car il m'avait l'air plus poussé que celui que j'utilise actuellement.

Je suis extrêmement surpris du résultat : les temps d'executions des scripts compressés par ton code sont hallucinants : 600ms en local pour parser un code js de 40ko ... (63ms non compressé ...). Je ne parle pas du temps de compression (plus de 4secondes ...) mais bien du temps de chargement du fichier en provenance du cache !

Je n'arrive pas a comprendre d'ou vient le problème ...

Même les css sont extrêmement longs ! 80ms pour un css de 3ko !

D'autres personnes rencontrent les mêmes problèmes ?
cs_x_mec Messages postés 63 Date d'inscription mercredi 25 août 2004 Statut Membre Dernière intervention 19 février 2008
31 oct. 2007 à 12:56
@zeguizmo

Oui voilà, c'est a grande echelle que ça prend son importance ! ça limite les accès aux fichiers externes.

Et ce n'est pas compromis par le temps de compression php, car php ne le compresse qu'une fois toute les 12 heures dans l'exemple, et tu peux carrement mettre une fois tout les 10 jours, donc après ça reste juste un accès à un fichier texte (non dynamique) unique, gain de poids, gain de temps et on epargne le serveur en evitant les accès multiple ;)
cs_zeguizmo Messages postés 138 Date d'inscription vendredi 1 août 2003 Statut Membre Dernière intervention 16 juillet 2009
30 oct. 2007 à 20:03
Juste une petite remaque pour ceux qui n'auraient pas bien compris : la différence ne se fait pas sur un client mais sur des milliers, des dizaines de milliers voire meme des centaines de milliers selon l'importance du site.

Dans ce cas, être passé de 80ko à 20ko pour un pauvre fichier js représente un gain de bande passante énorme.

Reste a savoir si le gain de bande passante n'est pas compromis par le temps (et l'intensité) d'utilisation du proc pour compresser tout ca via php. Tout dépend des priorités ... la vitesse d'execution coté client ou coté serveur. Des benchs sont à faire, fort à parier qu'ils dépendront énormément de vos configs respectives. Il est évident que dans certains cas cette méthode sera très efficace.

J'espère en avoir eclairé quelques uns ...

Bonne soirée.
Guilloch Messages postés 4 Date d'inscription mardi 14 août 2007 Statut Membre Dernière intervention 14 août 2007
14 août 2007 à 19:30
Bon, c'est pas trop mal fichu, et même si cela n'est pas utile pour tout le monde ca a le mérite de pouvoir en aider certain.
cs_x_mec Messages postés 63 Date d'inscription mercredi 25 août 2004 Statut Membre Dernière intervention 19 février 2008
14 août 2007 à 14:45
Thanks ;)
Rudy3212 Messages postés 154 Date d'inscription vendredi 20 août 2004 Statut Membre Dernière intervention 31 décembre 2007
14 août 2007 à 14:42
Bon je met une note, 8.

Bonne continuation
cs_x_mec Messages postés 63 Date d'inscription mercredi 25 août 2004 Statut Membre Dernière intervention 19 février 2008
14 août 2007 à 14:37
En fait c'est surtout que j'ai pas vraiment le temps (ni les moyens) de faire juste un compresseur, là j'ai utilisé le script de dean qui fait les 2. Faudrait faire des test de vitesses pour voir, mais je ne suis pas certain que ça ralentisse tant que ça ... preuve en est, bcp de framework javascript (comme jquery) propose des versions packagée avec cette méthode ...

A voir ...
Rudy3212 Messages postés 154 Date d'inscription vendredi 20 août 2004 Statut Membre Dernière intervention 31 décembre 2007
14 août 2007 à 14:27
Ha ben si tu le fait déja alors ton système est parfait xD,
afin presque :P.

Tu a l'air d'etre assez acro au milliseconde.
Mais tu utilise un obfuscateur de JavaScript qui ralenti l'execution.

Sa se contredi pas un peu ?.
Juste la compression et pas obfuscation qui ne sert a rien a part ralentir.
cs_x_mec Messages postés 63 Date d'inscription mercredi 25 août 2004 Statut Membre Dernière intervention 19 février 2008
14 août 2007 à 14:22
Ah non, le script php "die" si la vérification par md5 réussie ! Donc pas de réassemblage ...
Rudy3212 Messages postés 154 Date d'inscription vendredi 20 août 2004 Statut Membre Dernière intervention 31 décembre 2007
14 août 2007 à 13:21
Alors ce système peut être bien :P,
J'avait pas compris sa au début ^^.

Quelque idée d'amélioration, au lieu de tout réassembler, ce qui doit mettre quelque seconde.
Tu pourrai par exemple, calculer le md5 de chaque fichier, et au temps donnée, vérifier si le md5 a changé.

La vérification mettra a mon avis moins de temps que le réassemblage.
Donc gain de temps en général, sauf dans le cas ou le md5 est différent.

Car il fait la vérification + l'assemblage
cs_x_mec Messages postés 63 Date d'inscription mercredi 25 août 2004 Statut Membre Dernière intervention 19 février 2008
14 août 2007 à 13:16
Oui voilà tout as fait !

Tu peut définir la durée de mise en cache, cjo assemblera (et compressera, mais cette option est optionnelle) les différents fichiers en un seul. Ainsi tant que le fichier global qui est en cache n'a pas atteint la durée de validité, c'est lui qui est fourni aux visiteurs, et une fois la durée atteinte, il va rechercher à nouveau les différents fichiers et les ré-assemble :)
Rudy3212 Messages postés 154 Date d'inscription vendredi 20 août 2004 Statut Membre Dernière intervention 31 décembre 2007
14 août 2007 à 13:12
Non mais le faite de compresser les fichiers (de les rendre plus compacte) ne va gagner meme pas une demi seconde sur le temps de chargement avec du 512.

Mais en faite c'est un système de cache alors ?
Il assemble les fichier juste pour un temps donnée dans une cache ?
Mais les fichiers sont toujours séparé ?
cs_x_mec Messages postés 63 Date d'inscription mercredi 25 août 2004 Statut Membre Dernière intervention 19 février 2008
14 août 2007 à 12:25
Oui, j'vais te filer le numero de tel du client pour lui expliquer ^^

Et encore une fois, ça sert dans d'autres cas ;)
Rudy3212 Messages postés 154 Date d'inscription vendredi 20 août 2004 Statut Membre Dernière intervention 31 décembre 2007
14 août 2007 à 12:23
60Ko en 512 sa représente rien.
512 / 8 = 64

Soit 1 Seconde...
cs_x_mec Messages postés 63 Date d'inscription mercredi 25 août 2004 Statut Membre Dernière intervention 19 février 2008
14 août 2007 à 12:02
lol, oui voilà ^^
TheSin Messages postés 331 Date d'inscription mardi 12 novembre 2002 Statut Membre Dernière intervention 10 février 2009
14 août 2007 à 12:00
oui, bon, c'est à voir, mais bon, ton client est un imbécile compréhensible ^^
Donc source utile pour les cas comme le tient ;-)
cs_x_mec Messages postés 63 Date d'inscription mercredi 25 août 2004 Statut Membre Dernière intervention 19 février 2008
14 août 2007 à 11:32
Yep, ah non attend, je parle de 512 c'est chez le client, à son domicile quoi !

Tu auras beau lui expliqué qu'il n'y a que lui qui est en 512, qu'en économisant 60ko la plupart des visiteurs ne sentiront pas la différence ... il en à rien a faire ! Et malheureusement ils sont nombreux à faire la chasse au kilos superflus (je me retrouve des fois à compresser des image jpg avec une qualité de 40%, vraiment crade)

Mais il faut voir plus loin, imagine que la compression te fasse gagné 50 ko sur tes css et js, et que ton site ai bcp de visiteurs, genre 1.000.000 de pages vues par mois. Au total tu economise 50 Go de bande passante !

:)
TheSin Messages postés 331 Date d'inscription mardi 12 novembre 2002 Statut Membre Dernière intervention 10 février 2009
14 août 2007 à 10:39
C'est drôle ça, moi j'ai toujours vu les modifications de suite, sans jamais avoir eu à forcer la remise en cache. Remarque, ça doit venir de ma politique de mise en cache ou je ne sais quoi, ptetre du navigateur, surement la méthode de cache qui change, entre une simple durée de vie, ou si le navigateur regarde la date de modification des fichiers cache / serveur.
Je veux bien croire que ça puisse servir, donc pourquoi pas.
Enfin je trouve que si c'est de l'ouverture de fichiers coté serveur, là pourquoi pas utiliser ce genre de système, mais pour javascript/css, bon, voilà quoi, je l'ai expliqué au paragraphe précédent.

Et pourquoi ton client ne passe pas sur des serveurs dédiés au Web ? J'ai un peu de mal à comprendre comment des entreprises se permettent encore d'héberger sur du 512, ou site à fréquentation régulière...
A moins que tu parles de 512 en down, bin là le poids de ces fichiers importe peu, j'y était au 512, et là je suis à peine en 1024 sur du 20 Mbps théorique ....
cs_x_mec Messages postés 63 Date d'inscription mercredi 25 août 2004 Statut Membre Dernière intervention 19 février 2008
14 août 2007 à 10:10
@Rudy3212 et TheSin

Je ne comprend pas où est le problème !

Tout tes fichiers reste séparés ! CJO les regroupent (et les compressent) juste pendant la durée définie du cache (12 heures dans l'exemple). Une fois la durée terminée (ou tout simplement si vous n'activez pas le cache dans les paramètres cjo), il importera DYNAMIQUEMENT tout les fichiers js et css.
Donc au final l'utilisateur ne voit qu'un fichier, mais il y en a toujours plusieurs, comme des simple includes quoi ! Ne venez pas me dire que personne utilise des includes sous prétexte qu'au final ça ne ressort qu'un seul fichier ! Alors que c'est là tout l'avantage ....

Et même si comme tu le dis, avec l'adsl le poids importe peu, je peux te jurer qu'essayer de faire comprendre ça à un client qui me commande un site et qui roule encore en 512, c'est pas facile ;)

@TheSin
Et l'autre avantage aussi pour le cache, c'est que comme tu le dis, en général les fichier sont placé automatiquement en cache, mais du coup si tu fais une modif css il ne la verront pas tout de suite. Alors qu'avec cjo, tu réinitialise le cache toi-mème en virant le fichier généré :)
Rudy3212 Messages postés 154 Date d'inscription vendredi 20 août 2004 Statut Membre Dernière intervention 31 décembre 2007
14 août 2007 à 00:11
Personnellement regroupé tout les fichiers en 1 seul.
N'allège rien du tout donc aucune utilité.
Le reste peut avoir un petit impact mais avec l'adsl de nos jour on est plus au kilo près.

Personnellement quand je code le javascript et le css, je sépare volontairement les fichiers, pour l'edition c'est quand même beaucoup plus pratique.

Un js pour le bbcode ...
Faut pas tout mélangé.

Pour le css.
Un css pour la mise en page, un css pour la modification des input... un css pour le texte (gras, taille, couleur....).

C'est quand meme beacoup mieux je trouve.

Je ne met pas de note, car sinon je te mettrer pas la moyenne, mais j'ai même pas regarder le code donc pas de note.
TheSin Messages postés 331 Date d'inscription mardi 12 novembre 2002 Statut Membre Dernière intervention 10 février 2009
11 août 2007 à 16:10
pour le JS, bon, ca peut être pratique, en effet, même si personnellement je ne fais pas comme ca quand je module un site.
Même avec moteur de templates, ça ne me servirait pas, car dans l'architecture des fichiers et de code pour mes sites, c'est un fichier general.css pour tout se qui se répercute sur toutes les pages, idem pour le JS, et ensuite, un fichier CSS et JS est ajouté automatiquement s'il est créé pour le template à afficher.
Après, bon, je trouve ça étonnant de ne pas devoir utiliser un CSS sur 1 certaine page, car dans ce cas, bin c'est que soit on a pas les même éléments, soit on réinitialise certains éléments spéciallement pour cette page.

Sinon, comme dit, en effet, c'est très pratique pour le JS si on veut absolument avoir une compilation des fichiers.
D'un autre coté, y'a-t-il un gain de performances significatif apporté au script final alors que les fichiers JS et CSS sont générallement placé en cache HTTP ?
cs_x_mec Messages postés 63 Date d'inscription mercredi 25 août 2004 Statut Membre Dernière intervention 19 février 2008
11 août 2007 à 14:35
C'est certains que ce astuce prend toute son ampleur avec des sites basé sur des templates, donc quand toutes les pages sont faites sur le mème modèle ...

Mais je dis que ça reste tout de mème très modulable ! Un exemple:

Ton site se constitue de:
-style1.css
-style2.css
-effets1.js
-effets2.js
-et 15 pages html

Tu embarques tous tes .css et .js sur tes pages, sauf sur 5 d'entre elle où tu ne dois pas inclure "style2.css". Et bien c'est simple, tu fais un 2ème petit fichier.php pour ces 5 pages en supprimant "style2.css" du tableau ! C'est tout !

Donc ça reste assez modulable, bon c'est certains que ça se révèle moins utile pour les css car la méthode de compression est un peu spéciale, mais pour les fichier .js là ça reste selon moi une très bonne technique !

Mais je ne sais pas, j'dois avoir un sens logique différent, vu que vous avez l'air de penser que ça ne sert à rien (alors que bizarrement cette même technique de regroupement que j'avais développé mais en full javascript et sans compression avait fait un carton, reprise sur des sites allants de l'espagne au japon ^^)
TheSin Messages postés 331 Date d'inscription mardi 12 novembre 2002 Statut Membre Dernière intervention 10 février 2009
11 août 2007 à 11:26
La modularité, soit par exemple un fichier css et un fichier javascript par page qui en a besoin, sans compter les fichier "general.*" qui eux seront toujours chargés.
Ce qui permet de séparer chaque code spécifique à une page, et par la suite, réutiliser tout ce code découper ailleurs, sur un aute site par exemple, sans toucher au code d'origine.
Personnellement, je ne vois pas trop à quoi servent ces optimisations, surtout compresser les fichiers css en 1 seul, imaginons que dans 2 fichiers css je déclare le meme bloc pour le paramétrer différemment, bin c'est fichu :(.

Bonne idée tout de même, pour ceux qui ne tirent pas profit de cette modularité ;-)
(aka découper un site en modules)
cs_x_mec Messages postés 63 Date d'inscription mercredi 25 août 2004 Statut Membre Dernière intervention 19 février 2008
11 août 2007 à 10:01
Oui !

Je ne vois pas où est le problème, lorsqu'il faut rajouter un .js ou .css, on édite le fichier php au lieu d'éditer la page ...

Ou alors je n'ai pas vraiment compris le sens de ta remarque, si tu pouvais développer un petit peu ;)
cs_MATHIS49 Messages postés 368 Date d'inscription vendredi 10 octobre 2003 Statut Membre Dernière intervention 14 mai 2010 1
10 août 2007 à 22:05
" * de rassembler tout vos fichiers javascript en un seul et unique fichier js
* de rassembler tout vos fichiers css en un seul et unique fichier css"

Tu as pensé à la modularité quasi nécessaire d'un site Internet ?
Rejoignez-nous