Ce qui fait que mes scripts soient demandés deux fois lors de l'utilisation de Modernizr.load (yepnope.js)

J'utilise yepnope.js pour charger des fichiers javascript dynamiquement, et j'ai remarqué que mes scripts semblent être chargés deux fois selon Firebug et Webkit Inspector.

Le problème est que dans le panneau Net de Firebug (Firefox 4 dernier), leur réponse est un 200 , pas un 304 . Il semble être plus lent que dans Chrome.

J'ai téléchargé cette vidéo montrant le problème. Vous pouvez voir comment les fichiers jquery-1.6.1.min.js et libs.js sont chargés un temps supplémentaire.

Le code que j'utilise pour faire ceci est le suivant, simplifié:

 Modernizr.load({ load: ['jquery-1.6.1.min.js', 'libs.js'], complete: function () { console.log("loaded"); } }); 

Modernizr.load() est yepnope() .

Il y a une note à ce sujet dans leur documentation:

À partir de http://yepnopejs.com/

Je vois deux demandes dans mes outils de développement, pourquoi est-ce que tout le chargement est tout deux?

Selon votre navigateur et votre serveur, cela pourrait signifier un couple de choses différentes. En raison de la nature de la façon dont yepnope fonctionne, il existe deux requêtes pour chaque fichier. La première requête est de charger la ressource dans le cache et la deuxième requête est de l'exécuter (mais, comme elle est dans le cache, elle doit s'exécuter immédiatement). Voir deux requêtes est assez normal tant que la seconde requête est mise en cache. Si vous remarquez que la deuxième requête n'est pas mise en cache (et les temps de chargement de votre script sont doublés), assurez-vous d'envoyer les en-têtes de cache corrects pour permettre la mise en cache de vos scripts. C'est vital pour yepnope. Il ne fonctionnera pas sans la mise en cache appropriée activée. Nous testons effectivement pour nous assurer que les choses ne sont pas chargées deux fois dans notre suite de tests, alors si vous pensez que nous pouvons avoir un bug dans votre navigateur concernant le double chargement, nous vous encourageons à exécuter la suite de tests pour voir si le test de double chargement passe.