2 votes

Réduire la charge des annonceurs scripts.

J'ai un site web ( http://dev2.liquor.com ) qui se charge très rapidement lorsque je supprime les annonceurs et les scripts de suivi que nos partenaires nous donnent. Bien sûr, nous devons réduire le temps de chargement de la page de 6 secondes à 1 seconde, et je vois que c'est 100% tous nos fichiers js externes pour le suivi des partenaires, les annonces, etc.

Je me suis frappé la tête contre le mur en essayant de trouver d'autres moyens de charger/compresser/servir la multitude de js que l'utilisateur doit télécharger. Je peux facilement compresser/minifier le mien, mais celui de quelqu'un d'autre qui n'est pas sur notre serveur devient difficile à faire.

Le mieux que je puisse faire est d'obtenir un C sur YSlow, et chaque suggestion qu'ils me donnent concerne mes stupides scripts de suivi !

Je pense que le principal problème est le suivi ( http://pastebin.com/faMDGrrs ), que je peux voir dans la barre d'état, provoque un chargement très long du site. Des idées sur la façon de régler ce problème ?

Est-il même possible de gérer des scripts de tiers dans mon site web ?

Toute aide serait grandement appréciée.

1 votes

Hmm... Un certain type de système de mise en cache du contenu peut-être ?

1 votes

@joeqwerty - Je suis d'accord. J'essaierais d'aborder cette question comme si j'utilisais une api pour les flux rss. Les mettre en cache et ne les mettre à jour que lorsqu'un changement se produit sur le serveur distant. Vous ne pouvez pas gérer (dans une large mesure) les temps de chargement causés par les demandes aux serveurs externes que vous ne contrôlez pas.

0 votes

Dois-je simplement enrouler du code autour des fichiers js externes pour les mettre en cache ?

1voto

Rory Points 51

Voici un JS côté client que j'ai élaboré (sur la base du snippet de suivi asynchrone de Google Analytics) qui vous permettrait de charger des Javascripts externes de manière asynchrone :

<script type="text/javascript">
  (function() {
    var scripts = new Array(
        'external.domain.com/script1.js',
        'external.domain.com/script2.js',
        '../script1.js',
        './script2.js',
        '/script3.js'
    );
    if ( scripts.length )
    {
        for ( var i = 0; i < scripts.length; i++ )
        {
            var asynchronous = document.createElement('script');
            asynchronous.type = 'text/javascript';
            asynchronous.async = true;
            if (
                scripts[i].substring(0, 1) != '/' &&
                scripts[i].substring(0, 1) != '.'
            ) {
                // assume external domain (enforce protocol)
                asynchronous.src = ('https:' == document.location.protocol ? 'https://' : 'http://') + scripts[i];
            } else {
                // assume relative URI
                asynchronous.src = scripts[i];
            }
            var s = document.getElementsByTagName('script')[0];
            s.parentNode.insertBefore(asynchronous, s);
        }
    }
  })();
</script>

0voto

MoriartyNZ Points 11

Mettre des scripts de tierce partie dans une iframe pourrait être une alternative.

Le bon sens veut qu'un iframe ait un coût élevé (en termes de charge), mais si son coût est inférieur à celui du chargement d'éléments tiers, vous pouvez l'essayer.

Vous avez probablement fait la plupart des choses qui ont été décrites. aquí mais c'est quand même une bonne ressource.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X