[plugin] plxMinifyCache

i M@Ni M@N Membre
avril 2013 modifié dans Plugins
[h]Description :[/h]
minifie et met en cache le source. Basé sur Steve Clay et Ryan Minify.

[h]Exemple :[/h]
http://imanweb.free.fr/blog/

[h]Télécharger :[/h]
http://imanweb.free.fr/PluXML/

[h]Github.com :[/h]
https://github.com/ali0une/plxMinifyCache

[h]installation :[/h]
auto (v1.2)

[h]configuration :[/h]
Possibilité de spécifier la durée (en secondes) du cache (defaut = 3600).
Possibilité de spécifier certaines pages à ne pas mettre en cache (article, recherche) (v1.3)
Pages issue de POST ne sont pas mises en cache (v1.4)
Possibilité de minifier les inline scripts et styles. (v1.4)

[h]administration :[/h]
Possibilité de voir et vider le cache (v1.2)
«1

Réponses

  • StéphaneStéphane Membre, Ancien responsable de PluXml
    Salut
    Très interessant ce plugin.
    Ce qui m'interesserait maintenant c'est un benchmark pour quantifier le gain fait avec le plugin et son cache (en utilisant par exemple le plugin MyLoremIpsum pour générer 10, 100, 500, 1000 articles et comparer les perfs avec et sans cache).
    Je vais regarder le code pour voir si on peut s'affranchir de la modif du fichier index.php

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • i M@Ni M@N Membre
    v1.1 : pas de cache en mode preview
  • i M@Ni M@N Membre
    Stéphane a écrit:
    Très interessant ce plugin.
    Merci : )

    Stéphane a écrit:
    Ce qui m'interesserait maintenant c'est un benchmark pour quantifier le gain fait avec le plugin et son cache (en utilisant par exemple le plugin MyLoremIpsum pour générer 10, 100, 500, 1000 articles et comparer les perfs avec et sans cache).
    Pourquoi pas ... même en gagnant 10 ko par page, plus t'affiches de pages plus tu gagnes. Et surtout tu soulages le server : il calcule ta page toutes les heures, le reste du temps il se contente d'envoyer une page déjà générée. De toute façon tu y gagnes.

    Stéphane a écrit:
    Je vais regarder le code pour voir si on peut s'affranchir de la modif du fichier index.php
    Nice : )
  • StéphaneStéphane Membre, Ancien responsable de PluXml
    (re)Salut


    Voilà mes remarques, explications et ma version de ton plugin ;)


    - ci-dessous donc ma version sans avoir besoin de modifier le fichier index.php.
    - juste besoin d'activer le plugin et ça fonctionne
    - j'utilise le hook IndexEnd. Tu es passé à coté d'une fonctionnalité des plugins, celle qui permet d'injecter du code au niveau d'un hook pour qu'il y soit interprété à cet endroit, et non pas dans la méthode du plugin. Il faut construire une chaine de caractère avec dedans le code que tu veux executer. Après en faisant un echo "<?php ".$ma_chaine." ?>"; le code sera executé non pas dans la méthode du plugin mais à l'endroit du hook appelé.
    - question: faut-il utiliser ob_end_flush ? J'ai vu que tu as mis la ligne en commentaire. Perso j'executerais cette ligne car sinon on a que l'ob_start executé et pas de fonction qui ferme la bufférisation.
    - j'ai modifié la fonction OnDeactivate pour ne pas utiliser la fonction glob car si je me souviens bien sur free.fr par exemple l'utilisation de cette fonction est désactivée. Donc comme il y a un risque avec certains hébergeurs, j'ai préféré une méthode plus classique.
    - bien vu: on prefera readfile que file_get_contents (ou autre) car c'est la plus rapide, donc la plus intéressante pour un système de cache.
    - le test sur le mode préview je l'ai mis au niveau du constructeur pour conditionner la déclaration du hook du plugin, ce qui est beaucoup plus optimisé. on n'éxecute pas comme ça des lignes inutiles.
    - ça serait pas mal d'avoir une option pour vider le répertoire du cache à partir de l'administration. ça peut etre utile car si on fait des modifs online, ça permettra de forcer un rafraichissement du cache.


    Voilà, ça sera tout pour le moment ;)

    <?php
    /**
     * Plugin plxMinifyCache
     *
     * @package	PLX
     * @version	1.0
     * @date	15/04/2013
     * @author	i M@N
     **/
    class plxMinifyCache extends plxPlugin {
    
    	/**
    	 * Constructeur de la classe plxMinifyCache
    	 *
    	 * @param	default_lang	langue par défaut utilisée par PluXml
    	 * @return	null
    	 * @author	i M@N
    	 **/
    	public function __construct($default_lang) {
    
    		# Appel du constructeur de la classe plxPlugin (obligatoire)
    		parent::__construct($default_lang);
    
    		# droits pour accéder à la page config.php du plugin
    		$this->setConfigProfil(PROFIL_ADMIN);
    
    		# Déclarations des hooks
    		if($_SERVER['QUERY_STRING'] != 'preview') # pas de gestion du cache si on est en mode preview
    			$this->addHook('IndexEnd', 'IndexEnd');
    	}
    
    	public function OnActivate() {
    		/* cache dir check */
    		if (!is_dir(PLX_ROOT."cache/")) {
    		mkdir(PLX_ROOT."cache/");
    		}
    		$plxMotor = plxMotor::getInstance();
    		if (version_compare($plxMotor->version, "5.1.7", ">=")) {
    			if (!file_exists(PLX_ROOT."data/configuration/plugins/plxMinifyCache.xml")) {
    				if (!copy(PLX_PLUGINS."plxMinifyCache/parameters.xml", PLX_ROOT."data/configuration/plugins/plxMinifyCache.xml")) {
    					return plxMsg::Error(L_SAVE_ERR.' '.PLX_PLUGINS."plxMinifyCache/parameters.xml");
    				}
    			}
    		}
    	}
    
    	/**
    	 * Méthode appelée quand on désactive le plugin: pour nettoyer le cache
    	 *
    	 * @return	null
    	 * @author	Stephane F.
    	 **/
    	public function OnDeactivate() {
    		/* clean cache dir */
    		if($dh = opendir(PLX_ROOT."cache/")) {
    			while(($file = readdir($dh))!== false) {
    				if(strtolower(strrchr($file,'.')==".html"))
    					unlink(PLX_ROOT."cache/".$file);
    			}
    			closedir($dh);
    		}
    	}
    
    	/**
    	 * Méthode qui gère le cache de la sortie écran
    	 *
    	 * @return	stdio
    	 * @author	i M@N, Stephane F.
    	 **/
    	public function IndexEnd() {
    
    		$string = '
    		require_once(PLX_PLUGINS."plxMinifyCache/lib/HTML.php");
    		require_once(PLX_PLUGINS."plxMinifyCache/lib/JSMin.php");
    		require_once(PLX_PLUGINS."plxMinifyCache/lib/CommentPreserver.php");
    
    		$output = preg_replace("@ {2,}|\t+@is", "", $output);
    		$output = preg_replace("@<br />@is", "<br>", $output);
    		$output = preg_replace("@<hr />@is", "<hr>", $output);
    
    		$output = Minify_HTML::minify($output, array(
    				"jsMinifier" => array("JSMin", "minify"),
    				"jsCleanComments",
    				"xhtml" => true
    			)
    		);
    
    		$output = preg_replace("@\n@is", " ", $output); # suppression de retour chariot
    
    		$delay = "'.$this->getParam("delay").'";
    		$cache = PLX_ROOT."cache/cache_".md5($_SERVER["QUERY_STRING"]).".html";
    		$expire = time() - $delay; // 3600 (1 hr)
    		if(@is_file($cache) AND filemtime($cache) > $expire) {
    			$expire_offset = $delay;
    			header("Expires: ".gmdate("D, d M Y H:i:s", time() + $expire_offset)." GMT");
    			header("Cache-Control: private, must-revalidate, proxy-revalidate, post-check=10, pre-check=60, max-age=".$expire_offset);
    			header("Pragma: no-cache");
    			$gzip = substr_count($_SERVER["HTTP_ACCEPT_ENCODING"], "gzip") ? "ob_gzhandler" : "";
    			ob_start($gzip);
    			readfile($cache);
    			echo "\n<!-- cached ".$_SERVER["QUERY_STRING"]." ".date("Y-m-d H:i:s",filemtime($cache))." -->";
    			ob_end_flush();
    			exit;
    		} else {
    			$output .= "\n<!-- minified ".date("Y-m-d h:i:s")." -->";
    			file_put_contents($cache, $output);
    		}
    		';
    		echo '<?php '.$string.' ?>';
    	}
    }
    ?>
    

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • StéphaneStéphane Membre, Ancien responsable de PluXml
    je viens de penser à une autre optimisation possible: utiliser include au lieu de require_once qui sera plus rapide

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • i M@Ni M@N Membre
    avril 2013 modifié
    Stéphane a écrit:
    (re)Salut
    Voilà mes remarques, explications et ma version de ton plugin ;)
    re ... cool : )

    Stéphane a écrit:
    - ci-dessous donc ma version sans avoir besoin de modifier le fichier index.php.
    - juste besoin d'activer le plugin et ça fonctionne
    Parfait, merci. Je note ça peut resservir.

    Stéphane a écrit:
    - j'utilise le hook IndexEnd. Tu es passé à coté d'une fonctionnalité des plugins, celle qui permet d'injecter du code au niveau d'un hook pour qu'il y soit interprété à cet endroit, et non pas dans la méthode du plugin. Il faut construire une chaine de caractère avec dedans le code que tu veux executer. Après en faisant un echo "<?php ".$ma_chaine." ?>"; le code sera executé non pas dans la méthode du plugin mais à l'endroit du hook appelé.
    Clairement, je ne suis pas encore un expert, je bidouille encore pas mal malgré le super PDF pour faire un plugin. Merci pour l'explication, ça aussi je vais m'en resservir je pense. : )

    Stéphane a écrit:
    - question: faut-il utiliser ob_end_flush ? J'ai vu que tu as mis la ligne en commentaire. Perso j'executerais cette ligne car sinon on a que l'ob_start executé et pas de fonction qui ferme la bufférisation.
    Grande question ... à priori c'est pas la peine, ça génère plus de problèmes qu'autre chose. D'après ce que j'ai compris ob_end_flush est appelé automatiquement à la fin de l'exécution du script c'est donc redondant et il n'est utile que dans certains cas, notament les boucles.

    Stéphane a écrit:
    - j'ai modifié la fonction OnDeactivate pour ne pas utiliser la fonction glob car si je me souviens bien sur free.fr par exemple l'utilisation de cette fonction est désactivée. Donc comme il y a un risque avec certains hébergeurs, j'ai préféré une méthode plus classique.
    glob est plus optimal, donc je garde glob et je mets un fallback si !function_exists('glob') avec ta méthode. ; )

    Stéphane a écrit:
    - bien vu: on prefera readfile que file_get_contents (ou autre) car c'est la plus rapide, donc la plus intéressante pour un système de cache.
    Oui.

    Stéphane a écrit:
    - le test sur le mode préview je l'ai mis au niveau du constructeur pour conditionner la déclaration du hook du plugin, ce qui est beaucoup plus optimisé. on n'éxecute pas comme ça des lignes inutiles.
    Ah merci, ça aussi je savais pas trop comment m'y prendre. : )

    Stéphane a écrit:
    - ça serait pas mal d'avoir une option pour vider le répertoire du cache à partir de l'administration. ça peut etre utile car si on fait des modifs online, ça permettra de forcer un rafraichissement du cache.
    Done pour la v1.2 dispo demain. ; )

    Stéphane a écrit:
    Voilà, ça sera tout pour le moment ;)
    C'est déjà pas mal, mais merci pour le coup de main "much appreciated". : )
    Je te mets dans les auteurs et dans les crédits, c'est la moindre des choses.



    Edit :
    Stéphane a écrit:
    je viens de penser à une autre optimisation possible: utiliser include au lieu de require_once qui sera plus rapide
    Ah ah ... t'es là!

    Justement je l'ai modifié cet après-midi, ça m'a choqué aussi, j'ai dû copier/coller sans faire attention j'utilise jamais require_once c'est moins optimal que include_once. ; )

    ++
  • Je testerais ce plugin pendant le Week-End, jolie travail les amis :)
  • i M@Ni M@N Membre
    avril 2013 modifié
    v1.2 :
    [list=*]
    [*]ajout d'une interface admin pour vider le cache.[/*]
    [*]modifications suite aux remarques de Stéphane, merci à lui : )[/*]
    [/list]

    v1.2 commit sur github


    @bankai merci : )
  • bg62bg62 Membre
    avril 2013 modifié
    superbe ;)
    un petit test du GTmerix et 2% de gain ce qui n'est pas moindre chose ...
    mais, perso, j'ai ceci, lorsque je clique sur le titre d'un article :
    Fatal error: Uncaught exception 'JSMin_UnterminatedStringException' with message 'JSMin: Unterminated String at byte 404: 'écran HD</strong><br>' in /homepages/39/d141584484/htdocs/plugins/plxMinifyCache/lib/JSMin.php:203 Stack trace: #0 /homepages/39/d141584484/htdocs/plugins/plxMinifyCache/lib/JSMin.php(145): JSMin->action(1) #1 /homepages/39/d141584484/htdocs/plugins/plxMinifyCache/lib/JSMin.php(84): JSMin->min() #2 [internal function]: JSMin::minify('?-->?</div>??<d...') #3 /homepages/39/d141584484/htdocs/plugins/plxMinifyCache/lib/HTML.php(241): call_user_func(Array, '?-->?</div>??<d...') #4 [internal function]: Minify_HTML->_removeScriptCB(Array) #5 /homepages/39/d141584484/htdocs/plugins/plxMinifyCache/lib/HTML.php(108): preg_replace_callback('/(\s*)<script(\...', Array, '<!DOCTYPE html>...') #6 /homepages/39/d141584484/htdocs/plugins/plxMinifyCache/lib/HTML.php(48): Minify_HTML->process() #7 /homepages/39/d141584484/htdocs/index.php(88) : eval()'d code(17): Minify_HTML::minify('<!DOCTYPE html>...', Array) #8 /hom in /homepages/39/d141584484/htdocs/plugins/plxMinifyCache/lib/JSMin.php on line 203
    mais quoi qu'est-ce encore ??? (avec la version v1.2)
    @+
    juste je viens de commencer à mettre en ligne : http://www.unesourisetmoi.info/
    :)
  • i M@Ni M@N Membre
    @bg62 : tu enlèves ce que tu as modifié dans le fichier index.php, (ce n'est plus nécessaire).
    Récupère la v1.2 et reteste.

    Si tu as un souci précise l'url, ton hébergeur et la version de PHP.

    Merci.
  • bg62bg62 Membre
    avril 2013 modifié
    i M@N a écrit:
    @bg62 : tu enlèves ce que tu as modifié dans le fichier index.php, (ce n'est plus nécessaire).
    Récupère la v1.2 et reteste.

    Si tu as un souci précise l'url, ton hébergeur et la version de PHP.

    Merci.
    je l'avais noté au dessus : la version est bien la v1.2, le lien est dans cette réponse (mais le plugin est donc désactivé .... ) , hébergeur : 1and1, PHP Version 5.2.17 ... @+

    il me donne également des erreurs en local sous wamp ...
    ( ! ) Fatal error: Uncaught exception 'JSMin_UnterminatedStringException' with message 'JSMin: Unterminated String at byte 520: " />
    fonds d'écran animaux : chats et chatons
    ' in C:\wamp\www\unesourisetmoi.info\plugins\plxMinifyCache\lib\JSMin.php on line 203
    ( ! ) JSMin_UnterminatedStringException: JSMin: Unterminated String at byte 520: " />
    fonds d'écran animaux : chats et chatons
    in C:\wamp\www\unesourisetmoi.info\plugins\plxMinifyCache\lib\JSMin.php on line 203
    Call Stack
    #	Time	Memory	Function	Location
    1	0.0006	406144	{main}( )	..\index.php:0
    2	0.3231	3262000	eval( '?>@is", "
    ", $output); $output = preg_replace("@@is", "", $output); $output = Minify_HTML::minify($output, array( # "cssMinifier" => array("Minify_CSS", "minify"), "jsMinifier" => array("JSMin", "minify"), "jsCleanComments", "xhtml" => true ) ); $output = preg_replace("@\n@is", " ", $output); # suppression de retour chariot $delay = "3600"; $cache = PLX_ROOT."cache/cache_".md5($_SERVER["QUERY_STRING"]).".html"; $expire = time() - $delay; // 3600 (1 hr) if(@is_file($cache) AND filemtime($cache) > $expire) { $expire_offset = $delay; header("Expires: ".gmdate("D, d M Y H:i:s", time() + $expire_offset)." GMT"); header("Cache-Control: private, must-revalidate, proxy-revalidate, post-check=10, pre-check=60, max-age=".$expire_offset); header("Pragma: no-cache"); $gzip = substr_count($_SERVER["HTTP_ACCEPT_ENCODING"], "gzip") ? "ob_gzhandler" : ""; ob_start($gzip); readfile($cache); echo ""; # ob_end_flush(); exit; } else { $output .= ""; file_put_contents($cache, $output); } ?> )	..\index.php:88
    3	0.3297	3519112	Minify_HTML::minify( )	..\index.php(88) : eval()'d code:17
    4	0.3297	3574176	Minify_HTML->process( )	..\HTML.php:48
    5	0.3297	3574784	preg_replace_callback ( )	..\HTML.php:108
    6	0.3412	3776864	Minify_HTML->_removeScriptCB( )	..\HTML.php:108
    7	0.3438	3795344	call_user_func ( )	..\HTML.php:241
    8	0.3438	3795360	JSMin::minify( )	..\HTML.php:241
    9	0.3438	3796056	JSMin->min( )	..\JSMin.php:84
    10	0.3513	3814856	JSMin->action( )	..\JSMin.php:145
    
    si ça peut t'aider ....
  • StéphaneStéphane Membre, Ancien responsable de PluXml
    Bonjour
    Une petite question qui me vient comme ça. Comment se comporte le site pour la partie des commentaires. Si un visiteur poste un commentaire, comment réagit le cache ? Le commentaire est visible tout de suite ou il faut attendre l'expiration du cache pour un rafraichissement ?

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • i M@Ni M@N Membre
    Stéphane a écrit:
    Bonjour
    Une petite question qui me vient comme ça. Comment se comporte le site pour la partie des commentaires. Si un visiteur poste un commentaire, comment réagit le cache ? Le commentaire est visible tout de suite ou il faut attendre l'expiration du cache pour un rafraichissement ?
    Salut : )

    il faut attendre l'expiration du cache. A la limite mettre une durée de cache plus courte.

    Mais je comprends que ça puisse généer certains. il faudra étudier la possibilité de dissocier ce qui est mis en cache si c'est possible ... à voir, je note.
  • i M@Ni M@N Membre
    @bg62 :
    regarde ton source, ligne 131 à 133 :
    [== HTML ==]
    				<div class="article-content">
    					Si vous avez réellement un <span style="text-decoration:underline">grand écran</span>, il vous faut choisir parmi les <strong>fonds d'écran HD</strong> [...] tous ceux qui vous plaisent :)<br />
    

    toutes tes apostrophes ' ne sont pas encodées en ' contrairement au reste du source ... commence par remplacer ça pour voir.
    C'est la seule page qui bug ou ça fonctionne sur les autres?
  • StéphaneStéphane Membre, Ancien responsable de PluXml
    Une idée pour cette histoire de commentaire.
    En utilisant le hook plxMotorAddCommentaire, tu pourrais supprimer le fichier en cache pour la page en cours de visu. De cette façon au rechargement de la page, elle sera remis en cache avec le nouveau commentaire.
    A voir aussi pour les messages d'erreur s'il y a une erreur de capcha ou si une info obligatoire dans le formulaire n'est pas saisie.
    Une autre réflexion pour des problèmes similaires: comment ne pas mettre en cache la page affichée avec le moteur de recherche créée avec le plugin MySearch (on peut se poser le meme genre de question pour d'autres pages qu'il ne faut pas mettre en cache). il faudrait surement prendre en compte le mode d'affichage ($plxShow::mode): home, article, categories, archives, tags.
    Ce ne sont que des pistes...

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • bg62bg62 Membre
    avril 2013 modifié
    oui ... pas tout compris là ....
    pour cette page je l'ai régénérée ... et , perso, je ne vois plus rien d'étrange en ligne .... :8
    pour le reste j'ai réactivé le plugin et ... mêmes erreurs ^^^ ???
  • i M@Ni M@N Membre
    avril 2013 modifié
    Stéphane a écrit:
    Une idée pour cette histoire de commentaire.
    En utilisant le hook plxMotorAddCommentaire, tu pourrais supprimer le fichier en cache pour la page en cours de visu. De cette façon au rechargement de la page, elle sera remis en cache avec le nouveau commentaire.
    Bon à savoir mais ça va pas le faire à cause du captcha (voir ci-dessous) et du commentaire qui n'apparaîtra pas ensuite.

    Stéphane a écrit:
    A voir aussi pour les messages d'erreur s'il y a une erreur de capcha ou si une info obligatoire dans le formulaire n'est pas saisie.
    T'as raison ça coince avec le captcha, il ne sera pas actualisé puisqu'il est issu du cache à l'instant où tu veux commenter. Faut désactiver le cache en mode article seul.

    Stéphane a écrit:
    Une autre réflexion pour des problèmes similaires: comment ne pas mettre en cache la page affichée avec le moteur de recherche créée avec le plugin MySearch (on peut se poser le meme genre de question pour d'autres pages qu'il ne faut pas mettre en cache). il faudrait surement prendre en compte le mode d'affichage ($plxShow::mode): home, article, categories, archives, tags.
    Ce ne sont que des pistes...
    [del]il faut que je pige comment récupèrer la valeur de $plxShow->plxMotor->mode mais au niveau de mon plugin (dans le header.php de mon theme c'est bon ça echo 'article') pour savoir si c'est un article ... un petit coup de main stp je rame un peu ... : )[/del]
    C'est bon je viens de trouver : )
  • i M@Ni M@N Membre
    avril 2013 modifié
    bg62 a écrit:
    oui ... pas tout compris là ....
    t'inquiète ça me fait ça aussi parfois ... ;)
    bg62 a écrit:
    pour le reste j'ai réactivé le plugin et ... mêmes erreurs ^^^ ???
    OK mais je suis pas madame Soleil alors c'est quoi les erreurs cette fois?
  • bg62bg62 Membre
    i M@N a écrit:
    OK mais je suis pas madame Soleil alors c'est quoi les erreurs cette fois?
    ... les mêmes que celles mises plus haut , en ligne comme en local ....
    @+
  • StéphaneStéphane Membre, Ancien responsable de PluXml
    Salut i M@N
    De la même façon que le test pour savoir si on n'est pas en mode préview, tu peux rajouter celui-ci
    AND ($_SERVER['REQUEST_METHOD']!='POST')
    
    De cette façon le résultat des formulaires ne seront pas mis en cache (cas du moteur de recherche par exemple)

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • i M@Ni M@N Membre
    v1.3 : Possibilité de spécifier certaines pages à ne pas mettre en cache (article, recherche)
  • i M@Ni M@N Membre
    Stéphane a écrit:
    Salut i M@N
    De la même façon que le test pour savoir si on n'est pas en mode préview, tu peux rajouter celui-ci
    AND ($_SERVER['REQUEST_METHOD']!='POST')
    
    De cette façon le résultat des formulaires ne seront pas mis en cache (cas du moteur de recherche par exemple)
    Merci, je note je mettrai ça dans la v1.4 : )
  • i M@Ni M@N Membre
    avril 2013 modifié
    v1.4 : Possibilité de spécifier de minifier les inline scripts et styles.
    Les pages issues de POST ne sont pas mises en cache.

    voir le sur github
    v1.4
    fix POST v1.4
  • bg62bg62 Membre
    ça commence à viendre ... :)
    - sur : http://blog.unesourisetmoi.info/
    installé, paramétré et OK ... les tests faits montrent son efficacité
    mais sur : http://www.unesourisetmoi.info/
    si je prodèce de la même manière, tout semble fonctionner SAUF si je clique sur un lien (en sidebar ou dans une page) qui dirige vers un article ^^ et là :
    [== Indéfini ==]
    
    Fatal error: Uncaught exception 'JSMin_UnterminatedStringException' with message 'JSMin: Unterminated String at byte 407: 'écran colorés et agréables. La <span style="text-decoration:underline">flore</span> sur votre ordinateur.<br><img src="data/images/rose-jaune.jpg" alt="rose jaune" /><br><strong>une rose jaune</strong><br>' in /homepages/39/d141584484/htdocs/plugins/plxMinifyCache/lib/JSMin.php:203 Stack trace: #0 /homepages/39/d141584484/htdocs/plugins/plxMinifyCache/lib/JSMin.php(145): JSMin->action(1) #1 /homepages/39/d141584484/htdocs/plugins/plxMinifyCache/lib/JSMin.php(84): JSMin->min() #2 [internal function]: JSMin::minify('?-->?</div>??<d...') #3 /homepages/39/d141584484/htdocs/plugins/plxMinifyCache/lib/HTML.php(241): call_user_func(Array, '?-->?</div>??<d...') #4 [internal function]: Minify_HTML->_removeScriptCB(Array) #5 /homepages/39/d141584484/htdocs/plugins/plxMinifyCache/lib/HTML.php(108): preg_replace_callback('/(\s*)<script(\...', Array, '<!DOCTYPE html>...') #6 /homepages/39/d141584484/htdocs/plug in /homepages/39/d141584484/htdocs/plugins/plxMinifyCache/lib/JSMin.php on line 203
    
    
    alors là ... ???
    où se trouve le schimilimiblk ....
  • @bg62 : commence par nettoyer le code de tes pages. Il y a des erreurs...
  • bg62bg62 Membre
    Jerry Wham a écrit:
    @bg62 : commence par nettoyer le code de tes pages. Il y a des erreurs...
    je ne demande pas mieux .... :)
    quelles erreurs as-tu trouvées ?
  • i M@Ni M@N Membre
    bg62 a écrit:
    si je clique sur un lien (en sidebar ou dans une page) qui dirige vers un article ^^ et là :
    ...
    alors là ... ???
    où se trouve le schimilimiblk ....
    Jerry Wham a écrit:
    @bg62 : commence par nettoyer le code de tes pages. Il y a des erreurs...
    bg62 a écrit:
    je ne demande pas mieux .... :)
    quelles erreurs as-tu trouvées ?
    Jerry Wham a raison et d'ailleurs je t'ai déjà répondu à ce sujet ... http://forum.pluxml.org/viewtopic.php?pid=31520#p31520

    Je crois pas qu'il existe un plugin PluXML pour modifier du code foireux en code propre ... :P
  • bg62bg62 Membre
    celui-ci il est corrigé, non ?
  • aruhunoaruhuno Membre
    Bonjour,

    Est-ce que quelqu'un peu m'expliquer la différence avec BoostMyPlux ?
    Un intérêt de les cumuler sur un même site ? Vaut mieux t'il l'un ou l'autre ? Et pourquoi ?

    Oui je me suis mis en mode chiant, désolé.
    Merci d'avance pour vos réponses.
  • Je n'ai pas eu le temps de regarder le code de ce plugin. Mais ce que je peux dire est que Stéphane lui y a jeté un oeil et qu'il l'a un peu amélioré.
Connectez-vous ou Inscrivez-vous pour répondre.