Was ist ein "?" für das src-Attribut eines HTML-Skript-Tags?

7

Wenn dies schon einmal gefragt wurde, entschuldige ich mich, aber das ist eine ziemlich schwierige Frage. Dies ist das erste Mal, dass ich in all meinen Jahren der Webentwicklung darauf gestoßen bin, also bin ich ziemlich neugierig.

Ich bearbeite einige HTML-Dateien für eine Website, und ich habe festgestellt, dass im src-Attribut der Skript-Tags der vorherige Autor ein Fragezeichen gefolgt von Daten angehängt hat.

Beispiel: <script src="./js/somefile.js?version=3.2"></script>

Ich weiß, dass dies in einigen Sprachen für Wertübergabe in GET-Anfrage wie PHP verwendet wird, aber soweit ich je wusste, wurde dies nicht in Javascript getan - zumindest beim Aufruf einer Javascript-Datei. Weiß jemand, was das bedeutet, wenn überhaupt?

EDIT: Wow, viele Antworten. Danke für alles. Und da viele Leute ähnliche Dinge sagen, werde ich ein globales Update veröffentlichen, anstatt jeden zu kommentieren.

In diesem Fall sind die Javascript-Dateien statisch, daher meine Neugier. Ich habe sie auch geöffnet und habe nichts gesehen, um auf Variablen beim Laden von Dateien zuzugreifen. Ich habe nie über Caching oder einfache Versionskontrolle nachgedacht, beide, die in diesem Fall wahrscheinlicher sind.

    
Robert DeBoer 18.11.2010, 22:15
quelle

8 Antworten

10

Ich glaube, der Autor hat dafür gesorgt, dass er, wenn er Version 3.3 seines Skripts erstellt, die Version = in der URL des Skripts ändern kann, um sicherzustellen, dass Benutzer die neue Datei herunterladen, anstatt das alte zwischengespeicherte Skript ablaufen zu lassen in ihrem Browser.

Also in diesem Fall ist es Teil der Cache-Strategie.

    
Adrian 18.11.2010, 22:19
quelle
6

Ich vermute, dass es so ist, wenn er eine neue Version der JavaScript-Datei veröffentlicht, kann er die Version in den HTML-Dokumenten stoßen. Dies führt auf Anforderung nicht zur Server-Seite, aber es bewirkt, dass der Browser sie als eine andere Datei behandelt, wodurch der Browser gezwungen ist, das Skript erneut abzurufen und den lokalen Cache der Datei zu umgehen.

Auf diese Weise können Sie eine wirklich hohe Cache-Zeit (wie eine Woche oder einen Monat!) einstellen, aber nicht die Fähigkeit opfern, Skripte häufig zu aktualisieren, falls nötig.

    
cdhowie 18.11.2010 22:19
quelle
5

Was Sie beachten müssen ist, dass diese ./js/somefile.js?version=3.2 keine physische Datei sein muss. Es kann eine Seite sein, die die Datei im laufenden Betrieb erstellt. So können Sie es haben, wo die Anfrage sagt, "Hey, geben Sie mir Version 3 dieser js-Datei", und der serverseitige Code erstellt es und schreibt es in den Ausgabestrom.

Die andere Option besteht darin, den Browser zu zwingen, die Datei nicht zwischenzuspeichern und die neue abzulegen, wenn sie die Anfrage macht. Da sich der URI geändert hat, wird er die Datei als komplett neu betrachten.

    
kemiller2002 18.11.2010 22:17
quelle
2

Ein (gut konfigurierter) Webserver sendet einmal statische Dateien wie JavaScript-Quellcode und weist den Webbrowser an, diese Datei für einen bestimmten Zeitraum lokal zu cachen (kann ein Tag, eine Woche, ein Monat oder länger sein) ). Wenn der Browser eine andere Anforderung für die gleiche Datei sieht, wird nur diese Version verwendet, anstatt neuen Code vom Server zu erhalten.

Wenn sich die URL ändert - zum Beispiel durch Hinzufügen einer Abfragezeichenfolge -, vermutet der Browser, dass seine zwischengespeicherte Version nicht gut ist und erhält eine neue. Daher hilft der ? Entwicklern zu sagen: "Hoppla, ich habe diese Datei geändert, stelle sicher, dass der Browser eine neue Kopie erhält."

    
Phrogz 18.11.2010 22:19
quelle
1

In diesem Fall wird es wahrscheinlich verwendet, um sicherzustellen, dass die Quelldatei nicht zwischen den Versionen zwischengespeichert wird.

Natürlich könnte es auch Server-Seite verwendet werden, um die Javascript-Datei zu generieren, ohne zu wissen, was Sie am anderen Ende der Anfrage haben, ist es schwierig, endgültig zu sein.

Übrigens, der ?... -Anteil der URL wird als Abfragezeichenfolge bezeichnet.

    
ocodo 18.11.2010 22:18
quelle
1

Dies wird verwendet, um zu garantieren, dass der Browser eine neue Version des Skripts herunterlädt, wenn sie verfügbar ist. Die Versionsnummer in der URL wird jedes Mal erhöht, wenn eine neue Version bereitgestellt wird, sodass der Browser sie als eine andere Datei ansieht.

    
Ray 18.11.2010 22:18
quelle
1

Nur weil die Dateierweiterung .js ist, bedeutet das nicht, dass das Ziel eine tatsächliche .js -Datei ist. Sie könnten ihren Webserver so einrichten, dass sie die angeforderte URL an ein Skript weitergibt (oder buchstäblich ein Skript mit dem Namen somefile.js hat) und den Dateinamen und die Version interpretieren.

    
erjiang 18.11.2010 22:18
quelle
1

Die Abfragezeichenfolge hat nichts mit dem Javascript zu tun. Irgendein serverseitiger Code hostet eine andere Version, je nachdem, welche Querystring angezeigt wird.

Sie sollten niemals von Pfaden in einer URL ausgehen. Die Erweiterung auf einem Pfad in einer URL sagt Ihnen wirklich nichts. URLs können vollständig dynamisch sein und von serverseitigem Code bedient werden oder dynamisch in Webservern umgeschrieben werden.

Nun ist es üblich, URLs beim Laden von JavaScript-Dateien mit einer Querystring-Zeichenfolge zu versehen, um das clientseitige Caching zu verhindern. Wenn die Seite eine neue Version des Skripts aktualisiert und darauf verweist, kann die Seite durchbrechen und den Client veranlassen, das Skript zu aktualisieren.

    
Zac Bowling 18.11.2010 22:20
quelle

Tags und Links