Defer parsing of JavaScript sous joomla ???

Réduire
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • Defer parsing of JavaScript sous joomla ???

    Bonjour,
    suis en cours d'optimisation pour un site joomla 2.5, j'ai l'habitude d'ajouter un module JCH optimizer pour accélerer le tout, pas cette fois-ci, un bug intervient systématiquement avec virtuemart 2.0.16 (pas sur que la version aie à voir). Bref, donc, pas de JCH optimizer, suis donc passé par mon document htaccess, j'arrive à un 85% avec un gros blocage sur tous mes dossier javascript parce que pas "defered". Comme tout joomla, les scripts javascripts se collent dans le head, qui n'est vraiment pas conseillé, apparemment, google préférerait les voir en bas de page.
    D'où, la question :
    1 - Y a-t-il un moyen de forcer joomla à mettre ses scripts de module ailleurs que dans le head - soit mettre <jdoc:include type="head" /> ailleurs, j'ai bien essayé mais cela me colle une panade infernale.
    2 - Plus pratique, y aurait-il une bonne grosse preference d'administration qui permettrait de n'appeler les scripts que sur besoin, - pas vue...?
    3 - Enfin mais j'en doute, y aurait-il un moyen de coder la chose dans document htaccess pour regler le soucis. (Les quelques lignes de code que j'ai pu trouvé n'ont pas du tout fait le job)

    Suis preneur de n'importe quelle solution, je souhaite juste tourner aux 90++ comme d'hab,

    Merci.

    mon htaccess :

    Code:
    AddCharset UTF-8 .html
    AddDefaultCharset UTF-8
    
    <ifModule mod_gzip.c>
      mod_gzip_on Yes
      mod_gzip_dechunk Yes
      mod_gzip_item_include file \.(html?|txt|js|php|pl|css)$
      mod_gzip_item_include handler ^cgi-script$
      mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
    </ifModule>
    
    # les proxies ne doivent pas dÈcompresser le contenu ‡ la place de l'internaute
    Header append Vary "User-Agent env=!dont-vary"
    
    
    ## EXPIRES CACHING ##
    <IfModule mod_expires.c>
    ExpiresActive On
    ExpiresByType image/jpg "access 1 year"
    ExpiresByType image/jpeg "access 1 year"
    ExpiresByType image/gif "access 1 year"
    ExpiresByType image/png "access 1 year"
    ExpiresByType text/css "access 1 month"
    ExpiresByType text/html "access 1 month"
    ExpiresByType application/pdf "access 1 month"
    ExpiresByType text/x-javascript "access 1 month"
    ExpiresByType application/x-shockwave-flash "access 1 month"
    ExpiresByType image/x-icon "access 1 year"
    ExpiresDefault "access 1 month"
    </IfModule>
    ## EXPIRES CACHING ##
    
    <ifModule mod_headers.c>
      <filesMatch "\\.(ico|pdf|flv|jpg|jpeg|png|gif|swf|css|js)$">
        Header set Cache-Control "max-age=2592000, public"
      </filesMatch>
      <filesMatch "\\.(js)$">
        Header set Cache-Control "max-age=604800, private"
        Header append Vary: Accept-Encoding
      </filesMatch>
      <filesMatch "\\.(xml|txt)$">
        Header set Cache-Control "max-age=216000, public, must-revalidate"
      </filesMatch>
      <filesMatch "\\.(html|htm|php)$">
        Header set Cache-Control "max-age=1, private, must-revalidate"
      </filesMatch>
    </ifModule>
    
    <ifModule mod_headers.c>
      Header unset ETag
    </ifModule>
    FileETag None
    
    <ifModule mod_headers.c>
      Header unset Last-Modified
    </ifModule>
    
    <ifModule mod_headers.c>
        Header set Connection keep-alive
    </ifModule>
    Cliquez sur l'image pour l'afficher en taille normale

Nom : sc1.jpg 
Affichages : 1 
Taille : 43,2 Ko 
ID : 1820247

  • #2
    Re : Defer parsing of JavaScript sous joomla ???

    Bonjour

    Pour info, aeSecure dispose de plusieurs fonctionnalités qui permettent d'optimiser la vitesse d'affichage d'un site php.

    Rien pour le "deferred javascript" car, là, il faut intervenir dans le code source de Joomla pour forcer à écrire les inclusions js et les mettre à la fin du code HTML. J'ai déjà tenté de le faire manuellement, pour le jeu, et bien sûr, ben, ça marche pas forcément.

    Que veux dire "deferred" ? Le but est de charger le code HTML puis le code Javascript. Là, dessus, nous serons d'accord je pense. Oui mais comment savoir si le code Javascript peut être déférré ? Concrètement : tu as du code javascript qui va générer du code HTML (manipulation d'éléments DOM) et ce code est peut-être utilisé par un autre code JS. Si tu mets tout à la fin, il y aura peut-être un quelconque conflit JS et ta page ne s'affichera plus correctement et puis, l'ordre est important également. Ainsi, d'abord charger la librairie jQuery avant d'avoir des fichiers qui l'exploitent.

    Ceci fait qu'il n'est pas simple de savoir ce qui peut être "deferred"; c'est le job du développeur consciencieux. Il existe un attribut "deferred" pour cela; il devrait l'exploiter.

    PS : tu ne peux pas influencer l'ordre de chargement des scripts depuis un .htaccess.
    Christophe (cavo789)
    Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be
    Logiciel gratuit de scan antivirus : https://github.com/cavo789/aesecure_quickscan (plus de 45.000 virus détectés, 700.000 fichiers sur liste blanche)​

    Commentaire


    • #3
      Re : Defer parsing of JavaScript sous joomla ???

      Bonjour, Cavo789, j'ai bien tenté aesecure, le code php aesecure.php ne s'est pas exécuté, puis, de toutes manières, cela n'aurait pas changé grand chose.
      J'ai en effet bien essayé de mettre les balises javascript en bas de page, comme pour googleanalytics , par exemple, et en effet, et comme attendu, la moitié de ma page ne s'affiche pas.
      Cela veut-il dire que le problème est insolluble sous joomla?
      Y aurait-il un moyen de forcer un async sur les balises javascript?

      Commentaire


      • #4
        Re : Defer parsing of JavaScript sous joomla ???

        Bonjour

        Que ce soit Joomla ou pas, cela importe peu. Ce que je dis : mettre le code javascript en async ou en deferred n'est pas possible pour le webmaster. Seul le programmeur sait si son code peut être chargé après le chargement de la page. C'est lui qui connaît les dépendances de son code.

        Donc, perso, je ne modifie pas le type de chargement des fichiers JS sur mon site. Je programme toutefois, là où c'est possible, le async dans mon propre code JS.
        Christophe (cavo789)
        Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be
        Logiciel gratuit de scan antivirus : https://github.com/cavo789/aesecure_quickscan (plus de 45.000 virus détectés, 700.000 fichiers sur liste blanche)​

        Commentaire


        • #5
          Re : Defer parsing of JavaScript sous joomla ???

          M'ouais,
          si je modifie la ligne de code 163 à 166 du document monsite.com/librairies/joomla/document/html/renderer/head.php pour forcer mes javascript à passer en async ou en defer (ligne 159 à 162), j'obtiens bien par exemple <script src="/monsite.com/media/system/js/mootools-core.js" type="text/javascript" async></script> et j'obtiens un 95% gtmetrix.
          Le soucis est que les scripts ne s'executent pas ou de façon alléatoire (1 ouverture de page sur 3 sans javascript, je pensais pourtant respecter la typo de la chose selon http://www.alsacreations.com/astuce/...ync-defer.html.
          J'utilise ff3.6.28 pour tester la solution, soit disant pas de soucis pour async.

          Commentaire


          • #6
            Re : Defer parsing of JavaScript sous joomla ???

            Envoyé par fabvincent Voir le message
            Le soucis est que les scripts ne s'executent pas ou de façon alléatoire (1 ouverture de page sur 3 sans javascript,...
            Têtu tu es jeune Padawan. Je t'ai fait part de mon expérience (conflit JS); ce que tu sembles rencontrer à ton tour.

            Bonne chance avec tes codes
            Christophe (cavo789)
            Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be
            Logiciel gratuit de scan antivirus : https://github.com/cavo789/aesecure_quickscan (plus de 45.000 virus détectés, 700.000 fichiers sur liste blanche)​

            Commentaire


            • #7
              Re : Defer parsing of JavaScript sous joomla ???

              En effet, un peu têtu,
              ou juste surpris de me faire enfermer dans une problématique qui est pourtant commune, le defer ou async ne date pas d'hier dans les parametres google / gtmetrix, etc.

              Donc, pas de solution à l'heure actuelle ! Si je laisse mon async, ma page ne s'affiche bien que lors du rechargement, donc pas acceptable.

              Commentaire


              • #8
                Re : Defer parsing of JavaScript sous joomla ???

                Bon beh voila, optimisation presque finie, je suis à 95+ quasi partout sauf pour un gros 28 (F) pour mon Defer parsing of JavaScript sur gtmetrix et cela me frustre quelque peu... S'il faut relativiser, je m'en tire avec un 85% mais bon, ça gave!
                Si l'un d'entre vous a quelque astuce, je suis fortement preneur.
                Suite recherche, un async ou defer sur balise javascript ne fonctionnerait que sur html5, ce qui n'est pas le cas de toutes manière. En tout cas, je ne crois pas etre le seul dans ce cas, merci de partager.
                A+

                Commentaire

                Annonce

                Réduire
                Aucune annonce pour le moment.

                Partenaire de l'association

                Réduire

                Hébergeur Web PlanetHoster
                Travaille ...
                X