Server-Side-Pre-Rendering (SSPR)
Eintrag zuletzt aktualisiert am: 12.01.2023
Beim Server-Side-Pre-Rendering (
SSPR) wird zunächst auf dem
Webserver eine statische
HTML-Seite gerendert, die dann mit
JavaScript- oder
WebAssembly-Code hydriert wird und danach eine dynamische Seite mit
Client-Side-Rendering (
CSR) darstellt.
Details
Server-Side-Pre-Rendering ist eine Funktion in einigen modernen
JavaScript-basierten
Webframeworks, die eigentlich auf dem Client (
Client-Side-Rendering -
CSR) rendern, dieselben
Komponenten/
Templates auch auf einem
Webserver auszuführen. Der
Webserver, der die Single-Page-Web-App ausliefert, muss dazu
node.js unterstützen, um das
JavaScript-basierte
Webframework auf dem Server ausführen zu können.
Der
Webbrowser erhält dann
HTML vom Server, das zunächst statisch ist, dann aber "hydriert" wird. Als "Hydrieren" bezeichnet man das Anreichern einer statischen Webanwendung um
JavaScript-Code, sodass die Webanwendung dann im Browser interaktiv wird.
Dieses Server Side Pre-Rendering wird oft auch einfach als Server Side Rendering (SSR) bezeichnet. Das Weglassen des "Pre" stellt aber einen Begriffskonflikt mit Techniken dar, die ausschließlich auf dem Server rendern, z.B.
PHP,
Java Server Pages und
ASP.NET Core. Eine Webanwendung, die sowohl auf dem
Webserver als auch im
Webbrowser läuft, wird auch als "isomorphisch" oder "universal" bezeichnet. In Angular heißt die entsprechende Technik daher auch
Angular Universal [
https://angular.io/guide/universal].
Verwirrenderweise wird Server Side Pre-Rendering gelegentlich auch mit Static Site Generation (SSG) gleichgesetzt (z.B. in [
https://vite-plugin-ssr.com/pre-rendering]). Bei der Static Site Generation vollzieht sich das komplette Rendering aller Seiten zur Entwicklungszeit. Die Seite ist danach nicht interaktiv im Browser.
Was bringt Server Side Pre-Rendering?
Bei einer Single-Page-Web-App, die im Browser rendert, kann es einen Moment dauern, bis der Benutzer die erste angesprungene Seite sieht, denn der gesamte
JavaScript-Code, sowohl der selbstgeschriebene als auch der notwendige Web-Framework-Code, muss in den Browser geladen werden, bevor das Rendering beginnen kann. Web-Frameworks nutzen daher typischerweise Bundling und Minifikation, um diese Zeit bis zur Darstellung des Inhalts (engl. Time to Content) zu beschleunigen. Server Side Pre-Rendering kann die Time to Content weiter reduzieren, denn der Benutzer sieht bereits eine Inhaltsseite, auch wenn die
JavaScript-Dateien noch nicht vollständig geladen sind.
Der zweite große Vorteil von Server Side Pre-Rendering ist die bessere Suchmaschinenoptimierung (Search Engine Optimization – SEO), denn die Crawler der Suchmaschinen erhalten die vorgerenderte Seite vom
Webserver.
Nachteile von Server Side Pre-Rendering sind:
- Nicht alle JavaScript-basierten Webframeworks unterstützen Server Side Pre-Rendering.
- Der Webserver, der die Single-Page-Web-App ausliefert, muss node.js unterstützen, um das JavaScript-basierte Webframework auf dem Server ausführen zu können. Ein statischer Webserver, der normalerweise bei einer Single-Page-Web-App reicht, funktioniert beim Server Side Pre-Rendering nicht.
- Der Webserver hat mehr Rechenlast beim Server Side Pre-Rendering als wenn er nur statische Dateien ausliefern muss.
- Der Aufwand für die Einrichtung der Anwendung ist größer.
- Es gibt einige Funktionen (z.B. Zugriff auf Browser-APIs), die nicht im Rahmen des Server Side Pre-Rendering möglich sind.