Könnten JQuery und ähnliche Tools in die Browser-Installation integriert werden?

19

Nachdem Sie eine weitere Frage zu JQuery und CDNs gelesen haben, können Tools wie JQuery den Browser "mitnehmen", wodurch der Bedarf für den ersten Download von einem CDN oder von Ihrem eigenen Hostserver verringert / beseitigt wird.

Insbesondere JQuery-Dateien sind recht klein, sodass Sie im Rahmen einer Browser-Installation problemlos eine Reihe (alle?) Der verschiedenen Versionen installieren können. Dies würde den Platzbedarf für die Installation und die Download-Zeit für den Browser erhöhen.

Dann könnten Sites zuerst "local" überprüfen, bevor CDN (das dann zwischengespeichert wird), bevor sie schließlich standardmäßig vom Website-Server selbst herunterladen.

Wenn dies machbar ist, wurde es gemacht, und wenn nicht, warum wurde es nicht gemacht?

ozz
quelle
3
Wenn eine bestimmte JavaScript-Funktion so allgegenwärtig wird, dass sie überall benötigt wird, wird sie der Sprache hinzugefügt. Array.prototype.forEach, Array.prototype.indexOf, Object.createSind Beispiele für Code, der in die JavaScript - Engine selbst gebündelt wurde.
zzzzBov
Ich bin sicher, Chrome wird eine Lösung entwickeln, die dem Endbenutzer die Möglichkeit bietet, eine Erweiterung zu installieren, mit der die erforderlichen jQuery- / Javascript-Dateien beim erstmaligen Rendern einer Website zwischengespeichert werden können. Wenn der Benutzer ablehnt, wird die Anforderung wie gewohnt erzwungen. Die Option "Frag mich nicht noch einmal" könnte diese Option deaktivieren. In den Einstellungen kann es einen Bereich geben, in dem der Endbenutzer mithilfe einer einfachen Kontrollkästchenliste auswählen kann, welche js-Dateien im Browser-Cache gespeichert werden sollen. Es wird immer benutzerdefinierte js an den Client gesendet werden, aber es scheint , dass die js Dateien eliminieren pro Anfrage an den Client gesendet werden würde p optimieren
yardpenalty
1
Welche Version würden Sie vorschlagen, die sie enthalten? Was ist mit nächster Woche?
pdr
@pdr - alte Frage, mit viel Antwort auf das Negative dafür. ABER Sie könnten die neueste Version leicht mit der Browser-Version bündeln und dem Benutzercode erlauben, bei Bedarf auf die Anforderung einer neueren Version vom CDN zurückzugreifen. Mit wichtigen Änderungen wie JQuery 2.0 könnten Sie beides haben und dem Code die Wahl lassen. Alles ein stummer Punkt, obwohl wirklich :)
ozz

Antworten:

15

Es gibt keinen technologischen Grund, warum sie nicht konnten. Dies ist jedoch nicht erforderlich und verstößt gegen die grundlegende Philosophie des Webs. Dies ist nicht erforderlich, da Sie mit einem in ferner Zukunft abgelaufenen Header fast dasselbe erreichen können. Dies verstößt gegen die Philosophie des Webs, da es eine zentrale Autorität von oben nach unten gibt, über die Bibliotheken mit dem Browser gebündelt werden sollten.

Edit: JS-Bibliotheken sind in erster Linie dazu da, den Umgang mit dem DOM zu erleichtern. Ich denke nicht, dass das Bündeln von Bibliotheken von Drittanbietern mit dem Browser der richtige Weg ist, um die DOM-API angenehmer zu gestalten.

dan_waterworth
quelle
1
Danke, Dan. Kann ich Links zu dem lesen, was du beschreibst?
ozz
1
Ich würde argumentieren, dass die Notwendigkeit, jedes Mal, wenn ich eine Seite anfordere, Megabyte auf Megabyte der gängigen Bibliotheken herunterzuladen, einer anderen grundlegenden Webphilosophie zuwiderläuft, die Webseiten klein und zugänglich zu halten. Immerhin sind viele Menschen immer noch auf Modems und langsamen Satellitenverbindungen.
maple_shaft
4
Eine Wurzelkanaloperation würde die DOM-API angenehmer machen ...
Donal Fellows
1
@maple_shaft, das ist ein etwas merkwürdiges Argument. Die minimierte jQuery-Verteilung beträgt 31 KB. Während es sicherlich Webseiten gibt, die eine verrückte Anzahl verschiedener Bibliotheken laden, ist die Frage spezifisch für jQuery, und es gibt keine Abrechnung für beschissene Programmierer.
Adam Crossland
16

Eigentlich existiert das, was Sie beschreiben, schon seit Jahren. Es heißt Caching . Und es ist nicht nur für JQuery verfügbar, sondern für alles, was Ihr Browser herunterladen kann.

Dann könnten Sites zuerst "lokal" prüfen, bevor CDN, bevor sie schließlich standardmäßig vom Website-Server selbst heruntergeladen werden.

Genau das macht jeder Browser. Es überprüft zuerst den lokalen Cache und lädt dann bei Bedarf einen von CDN herunter. Bei richtiger Cache-Konfiguration gibt es sogar monatelang keinen Roundtrip zum Server (um nach einer neueren Version zu suchen).

Das Einbinden von JQuery in das Browser-Setup würde:

  • Hinzufügen unnötiger Komplexität zur Browseranwendung und zum Setup,

  • Hinzufügen unnötiger Komplexität zum Aktualisierungsprozess,

  • Erhöhen Sie die Anzahl der Aktualisierungen, um die aktuelle Version von JQuery auch für Benutzer zu erhalten, die sie nicht benötigen.

  • Fügen Sie Verwirrung hinzu: Warum JQuery und nicht Prototype oder ein anderes Framework, Bild, CSS-Datei usw.?

  • etc.

Die Komplexität eines Softwareprodukts zu erhöhen, ohne dass die Funktionen, die Leistung usw. davon profitieren, ist eine äußerst schlechte Idee.

Arseni Mourzenko
quelle
Vielen Dank. Ja, ich war in meiner Frage nicht klar. Mir ist GUT bewusst, dass das passiert. Ich spreche über das Beseitigen der Notwendigkeit sogar des ersten Downloads. Ich werde die Frage aktualisieren.
ozz
danke für all deine
gründe,
6
Sie können die Notwendigkeit für den ersten Download nicht beseitigen. Wenn JQuery im Setup enthalten ist, es wird zum ersten Mal heruntergeladen , wenn die Person , die die ausführbaren Setup herunterlädt (dann wird es wieder durch Updates heruntergeladen , wenn eine neue Version von JQuery freigegeben wird).
Arseni Mourzenko
2
Es beseitigt nicht den Leistungseinbruch, sondern verschiebt ihn vom Besuch der ersten Website zum Herunterladen der ausführbaren Setup-Datei, was insgesamt das Gegenteil einer Leistungsersparnis bedeutet. Es beseitigt nicht die Notwendigkeit von CDN, auch nicht, wenn Sie ältere Browser und Browser unterstützen möchten, die seit der Veröffentlichung der letzten JQuery-Version nicht mehr aktualisiert wurden.
Arseni Mourzenko
1
@Alle Wenn Sie dies weiter diskutieren möchten, nehmen Sie dies bitte zum Chat.
maple_shaft
5

Vergessen Sie nicht, dass jQuery eine js-Bibliothek ist, es scheint de facto eine geworden zu sein und als Allheilmittel zu gelten (bis es auf SO einprägsam wird), aber es ist nur eine js-Bibliothek.

Alles, was für die Skripterstellung standardisiert ist (EMCAScript), ist bereits im Browser enthalten. Alles andere, was zu anderen Browsern hinzugefügt wird, würde vom Standard abweichen und Sie würden mit browserübergreifenden Problemen für nicht standardisierte Browser (wie das IE-Ereignismodell) enden ), die einen Teil des Grundes beeinflussen, warum Bibliotheken wie jQuery überhaupt erstellt wurden.

Kurze Antwort: Sie könnten einbezogen werden, sollten es aber nicht.

StuperUser
quelle
5

Browser-Caching bietet so etwas wie das, worüber Sie sprechen. Es sollte der Fall sein, dass jQuery oder eine andere JS-Bibliothek einmal heruntergeladen und dann bei weiteren Anforderungen aus dem Cache abgerufen wird.

Obwohl jQuery die allgegenwärtigste JavaScript-Bibliothek ist, ist es nicht die einzige, und es scheint mir, dass es für das JS-Ökosystem schlecht wäre, sie zu einer installierten Komponente des Browsers zu machen. Der Wettbewerb ist gesund und führt in der Regel zu Innovationen, und wir Entwickler und Software-Anwender wären nicht gut beraten, wenn wir jQuery eine Sonderstellung einräumen würden.

Sobald Sie das Caching berücksichtigen, ist der Vorteil, den Sie erzielen, sehr, sehr gering. Die minimierte Version von jQuery ist nur 31 KB groß. Das ist kein Grund, etwas zu ändern .

Adam Crossland
quelle
danke Adam - yep, ich kenne das erste Download-Cache-Szenario. Meine Gedanken sind, das auch zu ersetzen. JQuery war nur ein Beispiel, aber ich stimme Ihren Gedanken zum Wettbewerb zu. Dies scheint der Hauptgrund dafür zu sein, dass das, was ich vorschlage, nicht passiert. Sie hätten dann verschiedene Browser mit verschiedenen Sätzen von "Standard" -Komponenten usw.
ozz
Ich habe die Frage aktualisiert, um zu erwähnen, dass mir das
Cachen