/ / AJAX App JavaScript Chargement Numéro - javascript, ajax, asp.net-mvc

AJAX App JavaScript Problème de chargement - javascript, ajax, asp.net-mvc

Je crée une application complète ajax oùil y a une page de base et toutes les pages auxquelles l'utilisateur accède dans l'application sont chargées via ajax dans un div de contenu de la page. Sur la page de base, j'inclus les divers scripts nécessaires pour chaque page de l'application (jQuery, jQuery-UI, autres fichiers JavaScript personnalisés). Ensuite, sur les différentes pages de l'application, j'inclus un script ou deux pour chaque page contenant la logique nécessaire à cette page. Chacun de ces fichiers de script a quelque chose qui s'exécute sur l'événement page ready. Le problème est que chaque fois que l'utilisateur accède à page1, le fichier page1.js est chargé. Ainsi, s’ils visitent cette page 10 fois, le script est alors chargé dix fois dans leur navigateur. En regardant les outils de développement de scripts Chrome après avoir parcouru le site, je vois des tonnes de scripts dupliqués.

J'ai lu quelque part à propos de vérifier pour voir si lele script a déjà été chargé à l'aide d'une valeur booléenne ou le stockage des scripts chargés dans un tableau. Mais le problème avec cela est que si je vois que le script est déjà chargé et que je ne le charge pas, la fonction page prête ne se déclenche pas pour le fichier javascript de la page et tout échoue.

Le fichier javascript est-il toujours chargé lorsque l'utilisateur visite la même page plusieurs fois?

J'ai remarqué en regardant le trafic réseau quechaque fois que nous visitons la page, le script est demandé avec un paramètre de nombre aléatoire (/Scripts/Page1.js?_=298384892398) qui provoque la demande forcée du fichier de script à chaque fois. J'ai défini le cache: true sur la méthode jQuery ajaxSetup et que le paramètre a été supprimé de la demande. Ainsi, la version mise en cache du fichier javascript a été chargée au lieu de créer une demande HTTP distincte. Mais le problème est que je ne veux pas que toutes les demandes ajax soient mises en cache car le contenu change constamment. Existe-t-il un moyen de forcer la mise en cache des fichiers javascript tout en permettant à toutes les autres demandes ajax de ne pas l'être?

Même lorsque j'ai forcé la mise en cache de toutes les demandes, le fichier javascript est toujours apparu plusieurs fois dans les outils de développement. Peut-être que ce n’est pas une grosse affaire mais que cela ne semble pas tout à fait correct.

Des conseils sur la façon de gérer cette situation?

Réponses:

1 pour la réponse № 1

A propos de votre première question:

Chaque fois que vous chargez un fichier JavaScript, l'intégralité de lale contenu est évalué par le navigateur. Cela dépend uniquement du contenu si vous pouvez le charger et l'exécuter plusieurs fois de suite. Je ne pense pas que ce soit une bonne pratique de le faire.

Je vous recommande néanmoins de trouver un moyen de vérifier s’il est déjà chargé et de déclencher l’événement "page chargée" manuellement dans le code déjà présent.

Pour la deuxième question: Je suppose que le script est destiné à s'afficher plusieurs fois lorsqu'il l'inclut plusieurs fois. Pour vous indiquer comment ne pas mettre en cache le JS chargé, vous devez savoir comment vous avez chargé le code, comment vous utilisez AJAX et comment le configuration générale de jQuery.


0 pour la réponse № 2

Après avoir fait quelques recherches, on dirait queest en fait juste un problème de Chrome. Lorsque vous chargez un script via AJAX, vous pouvez inclure les éléments suivants dans votre code pour le faire apparaître dans les outils de développement Chrome

// @ sourceURL = nom-de-script

Le problème est que lorsque vous naviguez en dehors de la page, les outils de développement conservent le script, mais il n'est en réalité plus référencé par la page.