Vu d'ici, il semble qu'il y ait de gros soucis en ce moment pour atteindre les services de Google. Problème de réseau ou dysfonctionnement des serveurs, l'autopsie de l'incident dira ce qui s'est passé. Toujours est-il que ce type d'incident révèle le nombre impressionnant de sites qui utilisent Google et dont le fonctionnement normal est intimement couplé à celui des services du géant californien.

En effet, Google fournit à de très nombreux sites de la publicité à afficher (google ads et doubleclick), des mouchards pour faire des statistiques (google-analytics) ou encore des librairies Javascript (googleapis). Tout ceci sous forme de fichiers Javascript.
Lorsque le téléchargement de ces Javascripts est ralenti, cela peut avoir des conséquences importantes sur l'affichage des pages qui les utilisent. En effet, le téléchargement des éléments d'un document HTML (feuilles de style, javascripts, images) étant généralement séquentiel, si le browser bloque sur le téléchargement d'un javascript, ce sont tous les éléments suivants qui se retrouvent dans la file d'attente. Par ailleurs, chaque fois que le browser télécharge un élément, l'affichage est figé. Et donc, suivant l'emplacement du Javascript dans le document HTML, cela peut bloquer l'affichage de toute la page (pour un script situé très haut dans le document) ou bien ne pas le perturber mais laisser le browser en attente (pour script situé en fin de document comme généralement le script google-analytics).

Naturellement, qu'il s'agisse de scripts de Google ou de tout autre site (y compris les scripts de publo.fr !), le problème est le même. Comment s'en prémunir ? Comment affaiblir le couplage pour qu'un site ne soit pas perturbé par la lenteur du téléchargement de Javascripts tiers ?
Voici trois pistes:

Héberger les scripts soi-même

Cette solution consiste à héberger soi-même les Javascripts que l'on utilise. C'est bien pour tout un tas de raisons d'utiliser un réseau de distribution pour les Javascripts que l'on utilise, mais cela peut aboutir à la situation décrite précédemment.
En hébergeant les Javascript sur le même serveur que celui qui sert les documents qui les incluent, on est assuré de ne pas rencontrer cette difficulté.

Faire du téléchargement asynchrone

Les fichiers Javascript sont téléchargés de façon synchrone lorsqu'ils sont inclus dans le document au moyen de balises <javascript src="............."/> dans le document HTML.

Par contre, si l'on inclut ces scripts dynamiquement dans le DOM, ils sont téléchargés de manière asynchrone, donc parallélisable.
Pour ce faire, il faut ajouter un peu de Javascript sur la page de façon à générer dynamiquement un nouvel élément Javascript qui inclut le script tiers.

En code, cela donne

<javascript type="text/javascript">
        var script = document.createElement('script');
        script.setAttribute('type','text/javascript');
        script.setAttribute('src','.........................');
        document.getElementsByTagName('head')[0].appendChild(script);
</javascript>

En faisant cela, le téléchargement du script ne bloquera pas le téléchargement des autres éléments ni l'affichage de la page. Seul inconvénient : le browser reste en attente tant que le script n'est pas chargé.

Faire du téléchargement paresseux

Si l'on veut palier à l'inconvénient relevé pour le téléchargement asynchrone, il faut ruser en différant le chargement du script. Pour ce faire, on va comme précédemment générer dynamiquement l'élément javascript d'inclusion, mais un peu plus tard : lorsque la page sera chargée.

En code cela donne :

<javascript type="text/javascript">
function ajouteScript(){
        var script = document.createElement('script');
        script.setAttribute('type','text/javascript');
        script.setAttribute('src','.....................');
        document.getElementsByTagName('head')[0].appendChild(script);
}
if( window.addEventListener ) { 
        window.addEventListener('load',ajouteScript,false);
} else if( document.addEventListener ) { 
        document.addEventListener('load',ajouteScript,false);
} else if( window.attachEvent ) { 
        window.attachEvent('onload',ajouteScript);
}
</javascript>

dans ce code, on associe la création de l'élément Javascript à l'événement 'load' du document.

Bien sûr, ces mesures ne règlent pas tout. Elles ne permettent de traiter que le cas de Javascripts autonomes. Lorsque la page utilise plusieurs scripts liés, il est nettement plus compliqué de faire du téléchargement paresseux tout en respectant les dépendances, mais cela dépasse largement le cadre de cet article fait sur le vif !