Wir haben eine HTML-Seite mit mehreren div
Blöcken. Wir möchten diese Divs in mehrere Dateien aufteilen und sie dann alle zu einer einzigen Datei zusammenfassen - ist es am besten, serverseitige Includes (in unserem Fall JSP) oder clientseitige Includes zu verwenden?
Beachten Sie, dass wir JQuery verwenden - nicht sicher, ob JQuery eine clevere Möglichkeit zum Ausführen der Includes bietet.
In puncto Leistung ist es dieser Art der Verarbeitung auf dem Server deutlich überlegen. Die Kosten in Bezug auf die E / A und die Verarbeitung für zusätzliche HTTP-Anforderungen - wie es notwendig wäre, wenn Sie die Kollatierung auf dem Client durchführen würden - wären signifikant. Das Hinzufügen zusätzlichen Inhalts auf dem Server führt zu einer Verzögerung von Millisekunden für den Benutzer; Tun Sie es auf dem Client nehmen Sie Größenordnungen mehr.
Bearbeiten Per Luke Schäfers Kommentar , dies setzt voraus, dass der Inhalt, der zusammengestellt wird, sofort erzeugt werden kann (z. B. durch Einfügen von flachen Dateien vom Server). Wenn es Zeit braucht (z. B. lange Datenbankaufrufe), ist es möglicherweise angebracht, den Hauptteil der Seite zu laden und zusätzlichen Inhalt mit jQuery hinzuzufügen. Die beste Lösung hängt wie immer von Ihren besonderen Umständen ab.
Tatsächlich haben clientseitige Includes eine Eigenschaft, die sehr nützlich ist: Client-Browser haben Caches! Wenn erwartet wird, dass sich einige Ihrer Inhalte nicht häufig ändern und von jedem Client ein Fragment der Seite häufig geladen wird, sind clientseitige Includes eine gute Idee, da der Browser-Cache des Clients genutzt werden kann.
Die Idee ist, dass Ihre ganze Seite eine Reihe von Platzhalterdivs enthält, bei denen die clientseitigen Includes gelöscht werden. Die HTML-Fragmente werden über AJAX-Aufrufe geladen. Wenn die HTTP-Response-Header der Fragmente ein Expires und / oder Cache-Control weit in die Zukunft spezifizieren, wird die AJAX-Anfrage vom Cache geliefert, wenn Ihr Client die nächste Seite besucht, anstatt zum Server zu gehen.
Ich muss allen anderen zustimmen, dass die Serverseite der Ort ist, mit einem Vorbehalt.
Wenn Ihre Abschnitte etwas enthalten, das zum Laden etwas Zeit in Anspruch nimmt, z. B. Inhalte aus einem separaten Webservice-Aufruf, kann es von Vorteil sein, JQuery diese mit einem get für Sie laden zu lassen, wie der Rest der Seite es kann geladen werden, während die Abschnitte asynchron geladen werden.
Anders als das, ja ... Serverseite
Ich bin mir nicht ganz sicher, wo ich auf die Client-Seite im Vergleich zur serverseitigen Debatte stoße. Die beliebte Sache in diesen Tagen scheint zu sein, Dinge auf der Client-Seite zu verarbeiten. Wahrscheinlich ist eine Kombination der beiden am besten. Um es vollständig auf der Clientseite auszuprobieren, entschied ich mich, ein Objekt hochzufahren, das die Clientseite asynchron enthielt, aber den Text für die spätere Verwendung zwischenspeichert. Es gibt eine Ladefunktion, die eine Rückruffunktion als Parameter verwendet, der beim erfolgreichen Laden aufgerufen wird. Es gibt auch eine Funktion, um das innere HTML eines Objekts auf den geladenen Text zu setzen. Das Objekt erfordert eine vorherige Einbindung von jquery.
%Vor%Um dieses Objekt zu verwenden, könnten Sie etwas wie folgt machen:
%Vor%Ich habe nicht zu viel getestet, aber es scheint ziemlich gut zu funktionieren.
Tags und Links javascript html jquery include