/ / AJAX App JavaScript Loading Issue - Javascript, Ajax, asp.net-mvc

AJAX App JavaScript Loading Problem - Javascript, Ajax, asp.net-mvc

Ich erstelle eine vollständige Ajax-Anwendung, in derEs gibt eine Basisseite und alle Seiten, zu denen der Benutzer innerhalb der Anwendung navigiert, werden über Ajax in einen Inhaltsbereich auf der Seite geladen. Auf der Basisseite füge ich die verschiedenen Skripte ein, die für jede Seite in der Anwendung benötigt werden (jQuery, jQuery-UI, andere benutzerdefinierte Javascript-Dateien). Dann füge ich auf den verschiedenen Seiten mit der Anwendung ein oder zwei Skripte für jede Seite hinzu, die die Logik enthalten, die nur für diese Seite benötigt wird. Jede dieser Skriptdateien hat etwas, das auf dem Seitenbereitschaftsereignis ausgeführt wird. Das Problem ist, dass jedes Mal, wenn der Benutzer zu Seite1 navigiert, die Datei page1.js geladen wird. Wenn sie diese Seite also zehnmal besuchen, wird das Skript zehnmal in ihren Browser geladen. Wenn ich mir die Chrome-Skriptentwicklertools anschaue, nachdem ich auf der Website herumgelaufen bin, sehe ich Tonnen von doppelten Skripten.

Ich habe irgendwo darüber gelesen, ob das stimmtscript wurde bereits mit einem booleschen Wert geladen oder speichert die geladenen Skripte in einem Array. Das Problem dabei ist jedoch, dass, wenn ich sehe, dass das Skript bereits geladen ist und ich es nicht lade, die Seitenbereitschaftsfunktion nicht für die Javascript-Datei der Seite ausgelöst wird und alles fehlschlägt.

Gibt es ein Problem, bei dem die Javascript-Datei immer wieder geladen wird, wenn der Benutzer dieselbe Seite mehrmals besucht?

Beim Betrachten des Netzwerkverkehrs ist mir aufgefallen, dassJedes Mal, wenn wir die Seite besuchen, wird das Skript mit einem Zufallszahlenparameter (/Scripts/Page1.js?_=298384892398) angefordert, der jedes Mal die erzwungene Anforderung für die Skriptdatei verursacht. Ich habe den Cache gesetzt: True-Einstellungen für die Methode jQuery ajaxSetup, wodurch der Parameter aus der Anforderung entfernt wurde und daher die zwischengespeicherte Version der Javascript-Datei geladen wurde, anstatt eine separate HTTP-Anforderung für sie zu erstellen. Das Problem ist jedoch, dass ich nicht möchte, dass alle gemachten Ajax-Anforderungen zwischengespeichert werden, da sich der Inhalt ständig ändert.

Auch wenn ich das Zwischenspeichern aller Anforderungen erzwungen habe, wurde die Javascript-Datei in den Entwicklertools immer wieder angezeigt. Vielleicht ist das keine große Sache, aber es scheint nicht ganz richtig.

Irgendwelche Ratschläge, wie man mit dieser Situation umgeht?

Antworten:

1 für die Antwort № 1

Zu Ihrer ersten Frage:

Jedes Mal, wenn Sie eine JavaScript-Datei laden, wird die gesamteInhalte werden vom Browser ausgewertet. Es hängt nur vom Inhalt ab, ob Sie ihn mehrmals hintereinander laden und ausführen können. Ich halte es nicht für eine bewährte Methode, dies zu tun.

Dennoch würde ich empfehlen, dass Sie einen Weg finden, um zu überprüfen, ob es bereits geladen wurde und das Ereignis "Seite geladen" manuell im bereits vorhandenen Code auszulösen.

Für die zweite Frage: Ich würde davon ausgehen, dass das Skript mehrere Male angezeigt werden soll, wenn es mehrere Male eingeschlossen wird. Um einen Rat zu geben, wie das geladene JS nicht zwischengespeichert werden kann, muss ich wissen, wie Sie den Code geladen haben, wie Sie AJAX und das Allgemeine jQuery-Einrichtung.


0 für die Antwort № 2

Nach weiteren Recherchen sieht es so ausist eigentlich nur ein Chrome-Problem. Wenn Sie ein Skript über AJAX laden, können Sie Folgendes in Ihren Code einfügen, damit es in den Chrome-Entwicklertools angezeigt wird

// @ sourceURL = Name eines Skripts

Das Problem besteht darin, dass das Skript von den Entwicklertools beibehalten wird, wenn Sie von der Seite weg navigieren. Die Seite verweist jedoch nicht mehr auf das Skript.