Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour,
J'utilise Zend_Cache pour mettre en cache du html, css, et javascript, que du classique.
Je voudrais améliorer un peu cela en compressant le fichier de cache. Pas une compression gzip, mais supprimer les sauts de ligne, les espaces, voir renommer des variables trop longue (selon l'idée Dojo ici http://shrinksafe.dojotoolkit.org/).
Je n'ai rien vu de tel dans ZF, est ce une erreur de ma part ?
Hors ligne
Non, mais tu peux écrire un Frontend dérivé de Zend_Cache_Backend_File. T'as intérêt à t'accrocher parce que je viens de jeter un oeil au code, ça n'a pas l'air simple...
Hors ligne
Ok, j'ai posté cela sur ZF issue tracker (http://framework.zend.com/issues/browse/ZF-6051).
En effet, le code est complexe, mais dès que j'ai un moment je vais essayé de m'y mettre.
Hors ligne
Je nes avais pas que Zend_Cache mettait en cache du html, css, javavscript ?
Hors ligne
Si, on peut mettre en cache quasiment n'importe quoi avec Zend_Cache. Bon encore faut-il qu'il y ait de l'intérêt.
Hors ligne
Perso je l'utilise même pour mettre en cache mes header/footer dynamiques...
Pour ce qui est de la compression, regarde otu simplement du côté d'un JSmin ou autre du même style (CSSTidy) ...
Hors ligne
Votre mise en cache du css, javascript, header et footer est dans un controller qui hérite tous les autres ou dans un plugin ?
Hors ligne
Header footer c directement dans mon layout
(CSS/JS c'est dans mon plugin d'initialisation, via un simple paramètre GET (oldschool) mais c'est sans Zend_Cache)
Hors ligne
Pour javascript il y a "packer" (http://dean.edwards.name/packer/) également. Ca doit être assez facilement intégrable dans les helpers headLink ou headScript tout ça.
Hors ligne
Alors si je comprend sbien vous utilisez le cache mémoire (APC ?) pour mettre en mémoire css/js, pour éviter les accès disque dur, sinon ca ne sert à rien de mettre en cache , c'est bien ça ?
Perso je l'utilise même pour mettre en cache mes header/footer dynamiques...
C'est possible ça ? Supposons, on a un caddie sur le header, si je mets le header en cache ca mettra aussi l'info du caddie. Comment ça marche ?
Hors ligne
keilnoth a écrit:
Pour javascript il y a "packer" (http://dean.edwards.name/packer/) également. Ca doit être assez facilement intégrable dans les helpers headLink ou headScript tout ça.
A noter que ce système dégrade un peu les perfs côté client évidement
alien7 a écrit:
Alors si je comprend sbien vous utilisez le cache mémoire (APC ?) pour mettre en mémoire css/js, pour éviter les accès disque dur, sinon ca ne sert à rien de mettre en cache , c'est bien ça ?
Non perso j'utilise le cache de base avec un backend en fichier pour l'instant. J'ai pas vraiment fais de benchmarks pour le moment. Mais dans tous les cas ça m'évite de générer mon menu à chaque fois vu que j'utilise un helper...
En gros je stocke en cache le rendu de mon helper...
alien7 a écrit:
Supposons, on a un caddie sur le header, si je mets le header en cache ca mettra aussi l'info du caddie. Comment ça marche ?
Ah, là, débrouille toi mon gas
Non sérieusement, j'ai plusieurs caches... Une partie statique du header, une partie menu-non connecté, une partie menu-user(id) , une partie login et une partie logged-in-user(id). Donc pleins de fichiers en fonction de mon nombre d'utilisateurs...
Hors ligne
Ah d'accord, tu découpes en plusieurs parties ton header.
Sinon Zend_cache ne met pas en cache les fichiers js et css, aucun interet.
Hors ligne
Sinon Zend_cache ne met pas en cache les fichiers js et css, aucun interet.
Oui mais imaginons que pour une grosse appli, tu ais plein de fichiers, genre presque un css et/ou js par controller plus plein d'autres car design compliqué / comportement client riche et que comme chez toi, tu ranges bien tout ça dans des tiroires/étagères différentes pour mieux t'y retrouver... et que tu compresses tout en un seul fichier pour ton client, là la notion de cache devient intéressante
ps: je crois que IE6 bloque a 30 css inclus ou 30 js je sais plus trop...
Hors ligne
Bon, si tu arrives à 30 JS / CSS, je pense qu'on peut dire que tu as un gros problème conceptuel.
La compression permet de gagner sur la bande passante et le temps de transfert. Réunir tous les CSS et JS en un seul fichier permet d'économiser sur le nombre de requêtes passées au serveur web. Mais là on parle pas de cache mais de compression et d'optimisation.
Ce n'est pas au serveur de mettre en cache les CSS et JS étant donné que ce n'est pas lui qui les "exécute" mais le client donc l'explorateur.
Mais comme dit MoOx, la génération d'une en-tête ou d'un pied de page peut être mise en cache afin d'épargner au serveur la tâche de re-génération du contenu souvent similaire à chaque requête.
Hors ligne
keilnoth a écrit:
La compression permet de gagner sur la bande passante et le temps de transfert. Réunir tous les CSS et JS en un seul fichier permet d'économiser sur le nombre de requêtes passées au serveur web. Mais là on parle pas de cache mais de compression et d'optimisation.
Ce n'est pas au serveur de mettre en cache les CSS et JS étant donné que ce n'est pas lui qui les "exécute" mais le client donc l'explorateur.
C'est pas faux mais là, le titre du topic induit en erreur :p
Hors ligne
Oui, je dirais même que nous en sommes enduit... d'erreur...
Hors ligne
Ce n'est pas au serveur de mettre en cache les CSS et JS étant donné que ce n'est pas lui qui les "exécute" mais le client donc l'explorateur.
C'est bien ce que je disais aussi.
J'utilise Zend_Cache pour mettre en cache du html, css, et javascript, que du classique.
Donc ce n'est pas possible.
Hors ligne
Vous pinaillez là...
J'utilise Zend_Cache pour mettre en cache du html, css, et javascript, que du classique.
A mon avis il parle d'une simple string...
Le serveur met en cache le code (sous sa forme String quoi)... et le client se demerde à mettre en cache le js S'IL est dans un fichier lié...
Hors ligne
Je que j'entendais pas mettre en cache html, css et javascript, c'est de l'html, du css et du javascript générés dynamiquement par php, pas des fichiers statiques.
Je ne met pas encore en cache des résultats de requête, de fonctions, etc ...
Hors ligne
Ah d'accord j'y vois plus clair maintenant lol.
Jj'ai polué le post pour rien. Desolé
Hors ligne
Bonjour,
Voici l'issue sur le bug tracker ZF : http://framework.zend.com/issues/browse/ZF-6051
Si vous voulez voter pour que cela soit intégré dans la prochaine version, ou tester le code proposé, n'hésitez pas
Hors ligne