<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de-AT">
	<id>https://mediawiki.fernfh.ac.at/mediawiki/index.php?action=history&amp;feed=atom&amp;title=Performance-Optimierung_%28Webdevelopment%29</id>
	<title>Performance-Optimierung (Webdevelopment) - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://mediawiki.fernfh.ac.at/mediawiki/index.php?action=history&amp;feed=atom&amp;title=Performance-Optimierung_%28Webdevelopment%29"/>
	<link rel="alternate" type="text/html" href="https://mediawiki.fernfh.ac.at/mediawiki/index.php?title=Performance-Optimierung_(Webdevelopment)&amp;action=history"/>
	<updated>2026-05-20T08:53:41Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in FernFH MediaWiki</subtitle>
	<generator>MediaWiki 1.37.0</generator>
	<entry>
		<id>https://mediawiki.fernfh.ac.at/mediawiki/index.php?title=Performance-Optimierung_(Webdevelopment)&amp;diff=6587&amp;oldid=prev</id>
		<title>Völkl Anna: CDN überarbeitet</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.fernfh.ac.at/mediawiki/index.php?title=Performance-Optimierung_(Webdevelopment)&amp;diff=6587&amp;oldid=prev"/>
		<updated>2025-05-27T19:37:34Z</updated>

		<summary type="html">&lt;p&gt;CDN überarbeitet&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;de-AT&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Nächstältere Version&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Version vom 27. Mai 2025, 19:37 Uhr&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l69&quot;&gt;Zeile 69:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 69:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;Ein CDN ist ein geografisch verteiltes Netzwerk von Proxy-Servern, das statische Inhalte (Bilder, CSS, JS) in Servern (Points of Presence - PoPs) näher am Endnutzer zwischenspeichert. Anfragen werden vom nächstgelegenen PoP bedient, was die Latenz reduziert.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;Ein CDN ist ein geografisch verteiltes Netzwerk von Proxy-Servern, das statische Inhalte (Bilder, CSS, JS) in Servern (Points of Presence - PoPs) näher am Endnutzer zwischenspeichert. Anfragen werden vom nächstgelegenen PoP bedient, was die Latenz reduziert.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== CDN - &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Wichtige &lt;/del&gt;Vor- und Nachteile ===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== CDN - Vor- und Nachteile ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;br&lt;/del&gt;&amp;gt;Vorteile&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;p&lt;/ins&gt;&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Content Delivery Networks (CDNs) bieten viele &lt;/ins&gt;Vorteile&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, die die Leistung und Zuverlässigkeit von Websites und Online-Anwendungen stark verbessern können. Der oft bedeutendste Vorteil sind schnellere &lt;/ins&gt;Ladezeiten&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;. Das wird &lt;/ins&gt;durch &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;die &lt;/ins&gt;geografische Nähe der &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;CDN-&lt;/ins&gt;Server zu den Nutzern &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;erreicht, wodurch die Latenz, also die Verzögerungszeit bei der Datenübertragung, reduziert wird&lt;/ins&gt;.&amp;lt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;/p&lt;/ins&gt;&amp;gt;&amp;lt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;p&lt;/ins&gt;&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Ein weiterer wichtiger Punkt ist die erhöhte Verfügbarkeit&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Durch &lt;/ins&gt;Lastverteilung &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;können CDNs &lt;/ins&gt;Traffic-Spitzen &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;effektiv bewältigen und bieten Redundanz&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;falls der Server der Web-Anwendung (zB Online-Shop) ausfallen sollte&lt;/ins&gt;.&amp;lt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;/p&lt;/ins&gt;&amp;gt;&amp;lt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;p&lt;/ins&gt;&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Auch die verbesserte Sicherheit ist ein starker Pluspunkt. Viele CDNs bieten Schutzmechanismen gegen &lt;/ins&gt;DDoS-&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Angriffe (Distributed Denial of Service) &lt;/ins&gt;und &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;stellen &lt;/ins&gt;Web Application Firewalls (WAF) &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;zur Verfügung, um die Sicherheit der Webanwendung zu erhöhen&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Schließlich ermöglichen CDNs eine hohe &lt;/ins&gt;Skalierbarkeit&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, da sie in der Lage sind&lt;/ins&gt;, große Mengen an Traffic zu bewältigen und sich &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;flexibel &lt;/ins&gt;an neue Bandbreitenanforderungen anzupassen.&amp;lt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;/p&lt;/ins&gt;&amp;gt;&amp;lt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;p&lt;/ins&gt;&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Zu den Nachteilen eines CDNs gehören die Kosten: Die Nutzung von &lt;/ins&gt;CDN-&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Diensten ist teilweise &lt;/ins&gt;mit &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;(hohen) &lt;/ins&gt;Kosten verbunden, obwohl &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;auch &lt;/ins&gt;kostenlose Tarife existieren&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, die jedoch oft eingeschränkte Funktionalitäten bieten&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Die &lt;/ins&gt;Einrichtung und Verwaltung &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;eines CDNs kann zudem &lt;/ins&gt;die &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Komplexität der IT-&lt;/ins&gt;Infrastruktur &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;erhöhen&lt;/ins&gt;.&amp;lt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;/p&lt;/ins&gt;&amp;gt;&amp;lt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;p&lt;/ins&gt;&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Ein weiterer Aspekt ist der teilweise Kontrollverlust, da &lt;/ins&gt;Daten auf &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;den &lt;/ins&gt;Servern von Drittanbietern &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;gespeichert werden&lt;/ins&gt;, was &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;für manche Organisationen Bedenken hinsichtlich der Datensicherheit und -hoheit aufwerfen kann&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Bei dynamischen Inhalten stoßen CDNs an ihre Grenzen, da sie primär &lt;/ins&gt;für statische Inhalte &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;wie Bilder, Videos oder CSS-Dateien optimiert sind. Dynamische &lt;/ins&gt;Inhalte erfordern &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;meist direkte &lt;/ins&gt;Anfragen an den Ursprungsserver,.&amp;lt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;/p&lt;/ins&gt;&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;p&amp;gt;Die &lt;/ins&gt;Cache-Invalidierung&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, also die &lt;/ins&gt;Sicherstellung&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, dass die zwischengespeicherten &lt;/ins&gt;Inhalte &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;stets aktuell sind, &lt;/ins&gt;kann &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;eine Herausforderung darstellen&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Veraltete Inhalte im Cache können zu einer inkonsistenten Benutzererfahrung führen&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Schließlich können falsch &lt;/ins&gt;konfigurierte CDNs zu &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;SEO-&lt;/ins&gt;Problemen &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;führen, beispielsweise durch Schwierigkeiten bei &lt;/ins&gt;der Kanonisierung &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;von URLs &lt;/ins&gt;oder &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;durch die Auslieferung veralteter Inhalte an Suchmaschinen-Crawler&lt;/ins&gt;.&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/p&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Schnellere &lt;/del&gt;Ladezeiten&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;br&amp;gt;Reduzierte Latenz &lt;/del&gt;durch geografische Nähe der Server zu den Nutzern.&amp;lt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;br&lt;/del&gt;&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Geringere Bandbreitenkosten&lt;/del&gt;&amp;lt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;br&lt;/del&gt;&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Entlastung des Ursprungsservers von Traffic, da Inhalte von CDN-Servern ausgeliefert werden&lt;/del&gt;.&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;br&amp;gt;Erhöhte Verfügbarkeit&amp;lt;br&amp;gt;&lt;/del&gt;Lastverteilung&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, Bewältigung von &lt;/del&gt;Traffic-Spitzen, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Redundanz bei Ausfall des Ursprungsservers&lt;/del&gt;.&amp;lt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;br&lt;/del&gt;&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Verbesserte Sicherheit&lt;/del&gt;&amp;lt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;br&lt;/del&gt;&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Können &lt;/del&gt;DDoS-&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Schutz &lt;/del&gt;und Web Application Firewalls (WAF) &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;bieten&lt;/del&gt;.&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;br&amp;gt;&lt;/del&gt;Skalierbarkeit&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;br&amp;gt;Fähigkeit&lt;/del&gt;, große Mengen an Traffic zu bewältigen und sich an neue Bandbreitenanforderungen anzupassen.&amp;lt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;br&lt;/del&gt;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Nachteile&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Kosten&lt;/del&gt;&amp;lt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;br&lt;/del&gt;&amp;gt;CDN-&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Dienste sind &lt;/del&gt;mit Kosten verbunden, obwohl kostenlose Tarife existieren.&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;br&amp;gt;Komplexität&amp;lt;br&amp;gt;&lt;/del&gt;Einrichtung und Verwaltung &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;können &lt;/del&gt;die Infrastruktur &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;komplexer machen&lt;/del&gt;.&amp;lt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;br&lt;/del&gt;&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Kontrollverlust (teilweise)&lt;/del&gt;&amp;lt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;br&lt;/del&gt;&amp;gt;Daten &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;befinden sich &lt;/del&gt;auf Servern von Drittanbietern, was &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;einen gewissen Kontrollverlust bedeutet&lt;/del&gt;.&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;br&amp;gt;Dynamische Inhalte&amp;lt;br&amp;gt;Primär &lt;/del&gt;für statische Inhalte&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;; dynamische &lt;/del&gt;Inhalte erfordern &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;oft &lt;/del&gt;Anfragen an den Ursprungsserver, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;obwohl Lösungen existieren&lt;/del&gt;.&amp;lt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;br&lt;/del&gt;&amp;gt;Cache-Invalidierung&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;br&amp;gt;&lt;/del&gt;Sicherstellung &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;der Aktualität zwischengespeicherter &lt;/del&gt;Inhalte kann &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;herausfordernd sein&lt;/del&gt;.&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;br&amp;gt;SEO-Probleme (Fehlkonfig&lt;/del&gt;.&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;)&amp;lt;br&amp;gt;Falsch &lt;/del&gt;konfigurierte CDNs &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;können &lt;/del&gt;zu Problemen &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;mit &lt;/del&gt;der Kanonisierung oder &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;veralteten Inhalten führen&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;br&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;br&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Caching-Strategien ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Caching-Strategien ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Völkl Anna</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.fernfh.ac.at/mediawiki/index.php?title=Performance-Optimierung_(Webdevelopment)&amp;diff=6586&amp;oldid=prev</id>
		<title>Völkl Anna am 19. Mai 2025 um 21:10 Uhr</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.fernfh.ac.at/mediawiki/index.php?title=Performance-Optimierung_(Webdevelopment)&amp;diff=6586&amp;oldid=prev"/>
		<updated>2025-05-19T21:10:06Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;de-AT&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Nächstältere Version&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Version vom 19. Mai 2025, 21:10 Uhr&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l29&quot;&gt;Zeile 29:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 29:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Minimierung der DOM-Manipulation ===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Minimierung der DOM-Manipulation ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;Das Document Object Model (DOM) repräsentiert eine Webseite als Baum von Objekten. Häufige direkte Manipulationen sind kostspielig, da sie Browser-Reflows (Neuberechnung des Layouts) und Repaints (Neuzeichnen von Teilen der Seite) auslösen können. Techniken zur Minimierung umfassen das Stapeln von DOM-Updates und die Verwendung von Document Fragments, um Änderungen außerhalb des DOM vorzunehmen, bevor sie angehängt werden. Der Virtual DOM (z.B. in React, Vue) ist eine Abstraktion, bei der Änderungen zuerst auf eine In-Memory-Repräsentation (Virtual DOM) angewendet werden. Ein &amp;quot;Diffing&amp;quot;-Algorithmus identifiziert dann minimale Änderungen, die am tatsächlichen DOM erforderlich sind, und optimiert so die Updates. Dies verbessert die Performance dynamischer Anwendungen mit häufigen UI-Aktualisierungen erheblich.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;Das Document Object Model (DOM) repräsentiert eine Webseite als Baum von Objekten. Häufige direkte Manipulationen sind kostspielig, da sie Browser-Reflows (Neuberechnung des Layouts) und Repaints (Neuzeichnen von Teilen der Seite) auslösen können. Techniken zur Minimierung umfassen das Stapeln von DOM-Updates und die Verwendung von Document Fragments, um Änderungen außerhalb des DOM vorzunehmen, bevor sie angehängt werden. Der Virtual DOM (z.B. in React, Vue) ist eine Abstraktion, bei der Änderungen zuerst auf eine In-Memory-Repräsentation (Virtual DOM) angewendet werden. Ein &amp;quot;Diffing&amp;quot;-Algorithmus identifiziert dann minimale Änderungen, die am tatsächlichen DOM erforderlich sind, und optimiert so die Updates. Dies verbessert die Performance dynamischer Anwendungen mit häufigen UI-Aktualisierungen erheblich.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;br&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;br&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Code-Minifizierung, Tree Shaking und Code Splitting ===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Code-Minifizierung, Tree Shaking und Code Splitting ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l38&quot;&gt;Zeile 38:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 39:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Nutzung von Web Workern für Off-Thread-Ausführung ===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Nutzung von Web Workern für Off-Thread-Ausführung ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;Web Worker ermöglichen die Ausführung von JavaScript in Hintergrund-Threads, getrennt vom Haupt-Browser-Thread, der UI-Updates und Nutzerinteraktionen behandelt.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;Web Worker ermöglichen die Ausführung von JavaScript in Hintergrund-Threads, getrennt vom Haupt-Browser-Thread, der UI-Updates und Nutzerinteraktionen behandelt.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;br&amp;gt;&amp;lt;p&amp;gt;Anwendungsfälle umfassen das Auslagern CPU-intensiver Aufgaben wie komplexe Berechnungen, Datenverarbeitung oder Bildmanipulation, um ein Einfrieren der UI zu verhindern und die Reaktionsfähigkeit (INP) zu verbessern. Web Worker können nicht direkt auf das DOM zugreifen; die Kommunikation mit dem Haupt-Thread erfolgt über postMessage(). Im Gegensatz zu Service Workern, die als Netzwerk-Proxies für Caching, Offline-Support und Push-Benachrichtigungen dienen, sind Web Worker für allgemeine Hintergrundaufgaben zur Verbesserung der UI-Reaktionsfähigkeit gedacht.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;br&amp;gt;&amp;lt;p&amp;gt;Anwendungsfälle umfassen das Auslagern CPU-intensiver Aufgaben wie komplexe Berechnungen, Datenverarbeitung oder Bildmanipulation, um ein Einfrieren der UI zu verhindern und die Reaktionsfähigkeit (INP) zu verbessern. Web Worker können nicht direkt auf das DOM zugreifen; die Kommunikation mit dem Haupt-Thread erfolgt über postMessage(). Im Gegensatz zu Service Workern, die als Netzwerk-Proxies für Caching, Offline-Support und Push-Benachrichtigungen dienen, sind Web Worker für allgemeine Hintergrundaufgaben zur Verbesserung der UI-Reaktionsfähigkeit gedacht.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Optimierung des kritischen Rendering-Pfads ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Optimierung des kritischen Rendering-Pfads ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Critical CSS: Generierung und Inline-Implementierung ===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Critical CSS: Generierung und Inline-Implementierung ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;Critical CSS ist der minimale Teil von CSS, der erforderlich ist, um den Above-the-Fold-Inhalt einer Seite darzustellen - also alles, was der Benutzer beim Laden der Seite auf einem Bildschirm sehen kann, ohne zu scrollen. Sein Zweck ist es, renderblockierendes CSS für die initiale Ansicht zu eliminieren, wodurch der Browser Pixel viel schneller auf den Bildschirm malen kann, was FCP und LCP verbessert. Generierungsmethoden umfassen manuelle Extraktion (zeitaufwendig), Online-Generatoren (einfacher, aber möglicherweise nicht perfekt optimiert) und Tools/Bibliotheken wie Critical oder Penthouse (automatisiert, integrierbar in Build-Prozesse). Die Implementierung erfolgt durch Inline-Einbettung des Critical CSS in &amp;amp;lt;style&amp;amp;gt;-Tags im &amp;amp;lt;head&amp;amp;gt; des HTML-Dokuments.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;Critical CSS ist der minimale Teil von CSS, der erforderlich ist, um den Above-the-Fold-Inhalt einer Seite darzustellen - also alles, was der Benutzer beim Laden der Seite auf einem Bildschirm sehen kann, ohne zu scrollen. Sein Zweck ist es, renderblockierendes CSS für die initiale Ansicht zu eliminieren, wodurch der Browser Pixel viel schneller auf den Bildschirm malen kann, was FCP und LCP verbessert. Generierungsmethoden umfassen manuelle Extraktion (zeitaufwendig), Online-Generatoren (einfacher, aber möglicherweise nicht perfekt optimiert) und Tools/Bibliotheken wie Critical oder Penthouse (automatisiert, integrierbar in Build-Prozesse). Die Implementierung erfolgt durch Inline-Einbettung des Critical CSS in &amp;amp;lt;style&amp;amp;gt;-Tags im &amp;amp;lt;head&amp;amp;gt; des HTML-Dokuments.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;br&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;br&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Asynchrones Laden von nicht-kritischem CSS und JavaScript ===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Asynchrones Laden von nicht-kritischem CSS und JavaScript ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;Nicht-kritisches CSS sind Stile, die nicht für das initiale Above-the-Fold-Rendering benötigt werden. Ladetechniken für CSS umfassen die Verwendung von &amp;amp;lt;link rel=&amp;quot;preload&amp;quot; as=&amp;quot;style&amp;quot; onload=&amp;quot;this.onload=null;this.rel=&amp;#039;stylesheet&amp;#039;&amp;quot;&amp;amp;gt; oder die Verwendung von media=&amp;quot;print&amp;quot; und das Austauschen zu media=&amp;quot;all&amp;quot; beim Laden. Nicht-kritisches JavaScript sind Skripte, die nicht für das initiale Seitenrendering oder die Interaktivität unerlässlich sind. Ladetechniken für JS umfassen die Attribute async und defer bei &amp;amp;lt;script&amp;amp;gt;-Tags. async lädt das Skript asynchron herunter und führt es aus, sobald es heruntergeladen ist, möglicherweise unterbricht es das HTML-Parsing. defer lädt das Skript asynchron herunter, führt es aber erst nach Abschluss des HTML-Parsings aus und in der Reihenfolge, in der sie im Dokument erscheinen.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;Nicht-kritisches CSS sind Stile, die nicht für das initiale Above-the-Fold-Rendering benötigt werden. Ladetechniken für CSS umfassen die Verwendung von &amp;amp;lt;link rel=&amp;quot;preload&amp;quot; as=&amp;quot;style&amp;quot; onload=&amp;quot;this.onload=null;this.rel=&amp;#039;stylesheet&amp;#039;&amp;quot;&amp;amp;gt; oder die Verwendung von media=&amp;quot;print&amp;quot; und das Austauschen zu media=&amp;quot;all&amp;quot; beim Laden. Nicht-kritisches JavaScript sind Skripte, die nicht für das initiale Seitenrendering oder die Interaktivität unerlässlich sind. Ladetechniken für JS umfassen die Attribute async und defer bei &amp;amp;lt;script&amp;amp;gt;-Tags. async lädt das Skript asynchron herunter und führt es aus, sobald es heruntergeladen ist, möglicherweise unterbricht es das HTML-Parsing. defer lädt das Skript asynchron herunter, führt es aber erst nach Abschluss des HTML-Parsings aus und in der Reihenfolge, in der sie im Dokument erscheinen.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;br&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;br&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Vorladen von Schlüsselressourcen (rel=&amp;quot;preload&amp;quot;) ===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Vorladen von Schlüsselressourcen (rel=&amp;quot;preload&amp;quot;) ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;&amp;amp;lt;link rel=&amp;quot;preload&amp;quot;&amp;amp;gt; informiert den Browser, eine Ressource mit hoher Priorität abzurufen, da sie bald benötigt wird, typischerweise für Ressourcen, die vom Browser spät entdeckt werden. Der Browser ruft die Ressource ab und speichert sie im Cache, führt jedoch Skripte nicht aus oder wendet Stylesheets nicht sofort an. Anwendungsfälle umfassen CSS-Dateien, JavaScript-Dateien (kritische Chunks), Web-Fonts (erfordert crossorigin-Attribut) und Bilder (kritische Above-the-Fold-Bilder). Die Implementierung erfolgt über &amp;amp;lt;link rel=&amp;quot;preload&amp;quot; href=&amp;quot;critical.js&amp;quot; as=&amp;quot;script&amp;quot;&amp;amp;gt;, wobei das as-Attribut (z.B. style, script, font, image) entscheidend für die korrekte Priorisierung ist. Preloading kann LCP (für Fonts, Bilder) und INP verbessern und helfen, CLS (für Fonts) zu reduzieren. Es sollten nur kritische Ressourcen vorgeladen werden, da ein Überladen die Performance durch Ressourcenkonkurrenz beeinträchtigen kann.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;&amp;amp;lt;link rel=&amp;quot;preload&amp;quot;&amp;amp;gt; informiert den Browser, eine Ressource mit hoher Priorität abzurufen, da sie bald benötigt wird, typischerweise für Ressourcen, die vom Browser spät entdeckt werden. Der Browser ruft die Ressource ab und speichert sie im Cache, führt jedoch Skripte nicht aus oder wendet Stylesheets nicht sofort an. Anwendungsfälle umfassen CSS-Dateien, JavaScript-Dateien (kritische Chunks), Web-Fonts (erfordert crossorigin-Attribut) und Bilder (kritische Above-the-Fold-Bilder). Die Implementierung erfolgt über &amp;amp;lt;link rel=&amp;quot;preload&amp;quot; href=&amp;quot;critical.js&amp;quot; as=&amp;quot;script&amp;quot;&amp;amp;gt;, wobei das as-Attribut (z.B. style, script, font, image) entscheidend für die korrekte Priorisierung ist. Preloading kann LCP (für Fonts, Bilder) und INP verbessern und helfen, CLS (für Fonts) zu reduzieren. Es sollten nur kritische Ressourcen vorgeladen werden, da ein Überladen die Performance durch Ressourcenkonkurrenz beeinträchtigen kann.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Asset-Optimierung ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Asset-Optimierung ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Bildoptimierung ===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Bildoptimierung ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;Bilder machen oft den größten Teil des Seitengewichts aus. Moderne Formate wie WebP (bessere Kompression als JPEG/PNG, unterstützt Transparenz und Animation) und AVIF (noch effizienter als WebP, lizenzfrei) sollten bevorzugt werden. Das &amp;amp;lt;picture&amp;amp;gt;-Element kann für Art Direction und Fallbacks verwendet werden. Die Kompression sollte zwischen Dateigröße und visueller Qualität abgewogen werden (verlustbehaftet vs. verlustfrei). Responsive Bilder sollten mit srcset und sizes für verschiedene Bildschirmgrößen und Auflösungen bereitgestellt werden. Native Lazy Loading (loading=&amp;quot;lazy&amp;quot;) für Bilder unterhalb des Falzes verbessert die initiale Ladezeit. Die Angabe von width- und height-Attributen bei &amp;amp;lt;img&amp;amp;gt;-Tags verhindert Layoutverschiebungen (CLS).&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;Bilder machen oft den größten Teil des Seitengewichts aus. Moderne Formate wie WebP (bessere Kompression als JPEG/PNG, unterstützt Transparenz und Animation) und AVIF (noch effizienter als WebP, lizenzfrei) sollten bevorzugt werden. Das &amp;amp;lt;picture&amp;amp;gt;-Element kann für Art Direction und Fallbacks verwendet werden. Die Kompression sollte zwischen Dateigröße und visueller Qualität abgewogen werden (verlustbehaftet vs. verlustfrei). Responsive Bilder sollten mit srcset und sizes für verschiedene Bildschirmgrößen und Auflösungen bereitgestellt werden. Native Lazy Loading (loading=&amp;quot;lazy&amp;quot;) für Bilder unterhalb des Falzes verbessert die initiale Ladezeit. Die Angabe von width- und height-Attributen bei &amp;amp;lt;img&amp;amp;gt;-Tags verhindert Layoutverschiebungen (CLS).&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;br&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;br&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Web-Font-Optimierung ===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Web-Font-Optimierung ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l114&quot;&gt;Zeile 114:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 121:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;Die Wahl der Rendering-Strategie (CSR, SSR, SSG, Hybrid) ist nicht nur ein technisches Implementierungsdetail, sondern eine grundlegende architektonische Entscheidung, die nicht nur alle Core Web Vitals und die Gesamtleistung tiefgreifend beeinflusst, sondern auch die SEO-Effektivität, Entwicklungskomplexität, Infrastrukturkosten und die Fähigkeit zur Inhaltsdynamik. Diese Wahl muss mit den Kernanforderungen der Web-Anwendung übereinstimmen. SSR und SSG sind im Allgemeinen besser für SEO geeignet. SSR kann serverintensiv sein, während SSG sehr günstig zu hosten ist. SSR und hybride Modelle können die Entwicklungskomplexität erhöhen. SSG ist ungeeignet für stark personalisierte oder Echtzeit-Inhalte.&amp;amp;nbsp;&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;Die Wahl der Rendering-Strategie (CSR, SSR, SSG, Hybrid) ist nicht nur ein technisches Implementierungsdetail, sondern eine grundlegende architektonische Entscheidung, die nicht nur alle Core Web Vitals und die Gesamtleistung tiefgreifend beeinflusst, sondern auch die SEO-Effektivität, Entwicklungskomplexität, Infrastrukturkosten und die Fähigkeit zur Inhaltsdynamik. Diese Wahl muss mit den Kernanforderungen der Web-Anwendung übereinstimmen. SSR und SSG sind im Allgemeinen besser für SEO geeignet. SSR kann serverintensiv sein, während SSG sehr günstig zu hosten ist. SSR und hybride Modelle können die Entwicklungskomplexität erhöhen. SSG ist ungeeignet für stark personalisierte oder Echtzeit-Inhalte.&amp;amp;nbsp;&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;=&lt;/del&gt;= Businessspezifische Überlegungen &amp;amp; Web-Performance &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;=&lt;/del&gt;=&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;= Businessspezifische Überlegungen &amp;amp; Web-Performance =&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Auswirkungen auf Key Performance Indicators (KPIs) ===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Auswirkungen auf Key Performance Indicators (KPIs) ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Völkl Anna</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.fernfh.ac.at/mediawiki/index.php?title=Performance-Optimierung_(Webdevelopment)&amp;diff=6585&amp;oldid=prev</id>
		<title>Völkl Anna am 19. Mai 2025 um 21:09 Uhr</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.fernfh.ac.at/mediawiki/index.php?title=Performance-Optimierung_(Webdevelopment)&amp;diff=6585&amp;oldid=prev"/>
		<updated>2025-05-19T21:09:54Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;https://mediawiki.fernfh.ac.at/mediawiki/index.php?title=Performance-Optimierung_(Webdevelopment)&amp;amp;diff=6585&amp;amp;oldid=6584&quot;&gt;Änderungen zeigen&lt;/a&gt;</summary>
		<author><name>Völkl Anna</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.fernfh.ac.at/mediawiki/index.php?title=Performance-Optimierung_(Webdevelopment)&amp;diff=6584&amp;oldid=prev</id>
		<title>Völkl Anna am 19. Mai 2025 um 21:09 Uhr</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.fernfh.ac.at/mediawiki/index.php?title=Performance-Optimierung_(Webdevelopment)&amp;diff=6584&amp;oldid=prev"/>
		<updated>2025-05-19T21:09:31Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;https://mediawiki.fernfh.ac.at/mediawiki/index.php?title=Performance-Optimierung_(Webdevelopment)&amp;amp;diff=6584&amp;amp;oldid=6583&quot;&gt;Änderungen zeigen&lt;/a&gt;</summary>
		<author><name>Völkl Anna</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.fernfh.ac.at/mediawiki/index.php?title=Performance-Optimierung_(Webdevelopment)&amp;diff=6583&amp;oldid=prev</id>
		<title>Völkl Anna: Die Seite wurde neu angelegt: „Web-Performance-Optimierung I. Einführung in die Web-Performance A. Definition und Kritikalität der Web-Performance Web-Performance bezeichnet die objektive Messung und subjektive Nutzerwahrnehmung der Geschwindigkeit und Zuverlässigkeit von Webanwendungen. Sie umfasst, wie schnell Inhalte laden, interaktiv werden und auf Benutzereingaben reagieren. Die Kritikalität der Web-Performance ergibt sich aus ihrem direkten Einfluss auf die Nutzerzufriedenhei…“</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.fernfh.ac.at/mediawiki/index.php?title=Performance-Optimierung_(Webdevelopment)&amp;diff=6583&amp;oldid=prev"/>
		<updated>2025-05-19T21:01:45Z</updated>

		<summary type="html">&lt;p&gt;Die Seite wurde neu angelegt: „Web-Performance-Optimierung I. Einführung in die Web-Performance A. Definition und Kritikalität der Web-Performance Web-Performance bezeichnet die objektive Messung und subjektive Nutzerwahrnehmung der Geschwindigkeit und Zuverlässigkeit von Webanwendungen. Sie umfasst, wie schnell Inhalte laden, interaktiv werden und auf Benutzereingaben reagieren. Die Kritikalität der Web-Performance ergibt sich aus ihrem direkten Einfluss auf die Nutzerzufriedenhei…“&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Web-Performance-Optimierung&lt;br /&gt;
I. Einführung in die Web-Performance&lt;br /&gt;
A. Definition und Kritikalität der Web-Performance&lt;br /&gt;
Web-Performance bezeichnet die objektive Messung und subjektive Nutzerwahrnehmung der Geschwindigkeit und Zuverlässigkeit von Webanwendungen. Sie umfasst, wie schnell Inhalte laden, interaktiv werden und auf Benutzereingaben reagieren. Die Kritikalität der Web-Performance ergibt sich aus ihrem direkten Einfluss auf die Nutzerzufriedenheit, das Engagement und letztendlich den Geschäftserfolg. In der heutigen digitalen Landschaft erwarten Nutzer schnelle und nahtlose Erlebnisse; ein Nichterfüllen dieser Erwartungen kann zu Abwanderung und verpassten Chancen führen. &lt;br /&gt;
Die anfängliche Performance-Erfahrung kann eine nachhaltig negative Voreingenommenheit gegenüber einer Marke erzeugen, wodurch zukünftige positive Interaktionen weniger wirkungsvoll werden. Umgekehrt baut eine konstant gute Performance im Laufe der Zeit Vertrauen und Loyalität auf. Eine langsame oder schlecht performende Webseite führt oft zu einer höheren Absprungrate und kann folglich auch eine negative Wahrnehmung Ihrer Marke verursachen. &lt;br /&gt;
II. Messung der Performance: Core Web Vitals und Tools&lt;br /&gt;
A. Verständnis der Core Web Vitals (CWV)&lt;br /&gt;
Die Core Web Vitals (CWV) sind eine Reihe von nutzerzentrierten Metriken von Google, die entwickelt wurden, um Schlüsselaspekte der Nutzererfahrung zu messen: Laden, Interaktivität und visuelle Stabilität.&lt;br /&gt;
Largest Contentful Paint (LCP): Misst die Ladeleistung – die Zeit, die benötigt wird, bis das größte Inhaltselement (z.B. ein Bild oder ein Textblock) im Ansichtsfenster sichtbar wird. Ein guter LCP-Wert liegt bei ≤2.5 Sekunden. Dies beeinflusst direkt die Wahrnehmung des Nutzers, wie schnell der Hauptinhalt lädt.&lt;br /&gt;
Interaction to Next Paint (INP): Misst die Reaktionsfähigkeit – die Latenz aller Klick-, Tipp- und Tastaturinteraktionen während des gesamten Besuchs eines Nutzers auf einer Seite, wobei die längste Interaktion (unter Auslassung von Ausreißern) gemeldet wird. INP hat First Input Delay (FID) ersetzt. Ein guter INP-Wert liegt bei ≤200 Millisekunden. Dies ist entscheidend dafür, wie reaktionsschnell und flüssig sich die Anwendung bei Nutzerinteraktionen anfühlt. FID maß nur die Verzögerung der ersten Eingabe, während INP eine umfassendere Sicht auf die gesamte Interaktivität bietet.&lt;br /&gt;
Cumulative Layout Shift (CLS): Misst die visuelle Stabilität – die Gesamtsumme aller einzelnen Layout-Shift-Scores für jede unerwartete Layoutverschiebung, die während der gesamten Lebensdauer der Seite auftritt. Ein guter CLS-Wert liegt bei ≤0.1. Dies adressiert die Nutzerfrustration, die durch unerwartet auf der Seite verschobene Elemente verursacht wird und oft zu Fehlklicks führt. CLS wird durch die Impact Fraction (Anteil des betroffenen Bildschirms) und die Distance Fraction (wie weit sich ein Element verschoben hat) gemessen.&lt;br /&gt;
B. Performance-Messwerkzeuge: Google PageSpeed Insights, Lighthouse und Real User Monitoring (RUM)&lt;br /&gt;
Google PageSpeed Insights (PSI): Liefert sowohl Labordaten (über Lighthouse) als auch Felddaten (aus dem Chrome User Experience Report - CrUX) für eine bestimmte URL. Bietet Performance-Scores und Vorschläge.&lt;br /&gt;
Lighthouse: Ein Open-Source, automatisiertes Werkzeug zur Verbesserung der Qualität von Webseiten. Prüft Performance, Barrierefreiheit, PWA, SEO usw. in einer simulierten (Labor-)Umgebung.&lt;br /&gt;
Real User Monitoring (RUM) / Chrome User Experience Report (CrUX):&lt;br /&gt;
RUM sammelt Leistungsdaten von tatsächlichen Nutzern, die mit der Webseite in Echtzeit interagieren, und spiegelt dabei unterschiedliche Netzwerkbedingungen, Geräte und geografische Standorte wider.&lt;br /&gt;
CrUX ist ein öffentlicher Datensatz von Google, der widerspiegelt, wie reale Chrome-Nutzer beliebte Ziele im Web erleben, und liefert Felddaten für Core Web Vitals.&lt;br /&gt;
Diskrepanzen zwischen Labor- (Lighthouse/PSI Labor) und Felddaten (CrUX/RUM):&lt;br /&gt;
Die Labordaten stammen aus einer kontrollierten, simulierten Umgebung. Felddaten repräsentieren aggregierte reale Nutzererfahrungen über einen Zeitraum (z.B. 28 Tage für CrUX).&lt;br /&gt;
Faktoren, die Unterschiede verursachen:&lt;br /&gt;
Caching: Echte Nutzer profitieren vom Browser-Caching bei wiederholten Besuchen oder der Navigation innerhalb der Seite, was Labortests (insbesondere Kaltstarts) nicht immer widerspiegeln.&lt;br /&gt;
Nutzerbedingungen: Netzwerkqualität, Gerätefähigkeiten und geografischer Standort variieren bei echten Nutzern erheblich im Vergleich zu standardisierten Labortests.&lt;br /&gt;
Inhaltsvariationen: Cookie-Banner, A/B-Tests oder personalisierte Inhalte können sich zwischen Labortests und dem, was echte Nutzer sehen, unterscheiden.&lt;br /&gt;
Above-the-Fold vs. vollständige Seiteninteraktion: Lighthouse konzentriert sich primär auf den initialen Ladevorgang, während CrUX Metriken wie CLS und INP über den gesamten Lebenszyklus der Seite erfasst, einschließlich Verschiebungen und Interaktionen nach dem Laden.11&lt;br /&gt;
III. Client-seitige Performance-Optimierung&lt;br /&gt;
A. JavaScript-Optimierung&lt;br /&gt;
1. Minimierung der DOM-Manipulation und die Rolle des Virtual DOM&lt;br /&gt;
Das Document Object Model (DOM) repräsentiert eine Webseite als Baum von Objekten. Häufige direkte Manipulationen sind kostspielig, da sie Browser-Reflows (Neuberechnung des Layouts) und Repaints (Neuzeichnen von Teilen der Seite) auslösen können. Techniken zur Minimierung umfassen das Stapeln von DOM-Updates und die Verwendung von Document Fragments, um Änderungen außerhalb des DOM vorzunehmen, bevor sie angehängt werden. Der Virtual DOM (z.B. in React, Vue) ist eine Abstraktion, bei der Änderungen zuerst auf eine In-Memory-Repräsentation (Virtual DOM) angewendet werden. Ein &amp;quot;Diffing&amp;quot;-Algorithmus identifiziert dann minimale Änderungen, die am tatsächlichen DOM erforderlich sind, und optimiert so die Updates. Dies verbessert die Performance dynamischer Anwendungen mit häufigen UI-Aktualisierungen erheblich.&lt;br /&gt;
&lt;br /&gt;
2. Code-Minifizierung, Tree Shaking und Code Splitting&lt;br /&gt;
Minifizierung: Entfernt unnötige Zeichen (Leerzeichen, Kommentare) aus HTML-, CSS- und JavaScript-Dateien, um deren Größe zu reduzieren, was zu schnelleren Downloads und geringerem Bandbreitenverbrauch führt. &lt;br /&gt;
Tree Shaking (Dead Code Elimination): Ein Prozess, der typischerweise von Modul-Bundlern (z.B. webpack, Rollup) durchgeführt wird und ungenutzten JavaScript-Code entfernt, indem import- und export-Anweisungen in ES6-Modulen analysiert werden. Dies reduziert die endgültige Bundle-Größe.&lt;br /&gt;
Code Splitting: Zerlegt große JavaScript-Bundles in kleinere Chunks. Nur der für die initiale Ansicht notwendige Code wird geladen; andere Chunks werden bei Bedarf geladen (z.B. bei Navigation oder Interaktion). Dies verbessert die initiale Ladezeit.&lt;br /&gt;
3. Nutzung von Web Workern für Off-Thread-Ausführung&lt;br /&gt;
Web Worker ermöglichen die Ausführung von JavaScript in Hintergrund-Threads, getrennt vom Haupt-Browser-Thread, der UI-Updates und Nutzerinteraktionen behandelt.&lt;br /&gt;
&lt;br /&gt;
Anwendungsfälle umfassen das Auslagern CPU-intensiver Aufgaben wie komplexe Berechnungen, Datenverarbeitung oder Bildmanipulation, um ein Einfrieren der UI zu verhindern und die Reaktionsfähigkeit (INP) zu verbessern. Web Worker können nicht direkt auf das DOM zugreifen; die Kommunikation mit dem Haupt-Thread erfolgt über postMessage(). Im Gegensatz zu Service Workern, die als Netzwerk-Proxies für Caching, Offline-Support und Push-Benachrichtigungen dienen, sind Web Worker für allgemeine Hintergrundaufgaben zur Verbesserung der UI-Reaktionsfähigkeit gedacht.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
B. Optimierung des kritischen Rendering-Pfads&lt;br /&gt;
1. Critical CSS: Generierung und Inline-Implementierung&lt;br /&gt;
Critical CSS ist der minimale Teil von CSS, der erforderlich ist, um den Above-the-Fold-Inhalt einer Seite darzustellen - also alles, was der Benutzer beim Laden der Seite auf einem Bildschirm sehen kann, ohne zu scrollen. Sein Zweck ist es, renderblockierendes CSS für die initiale Ansicht zu eliminieren, wodurch der Browser Pixel viel schneller auf den Bildschirm malen kann, was FCP und LCP verbessert. Generierungsmethoden umfassen manuelle Extraktion (zeitaufwendig), Online-Generatoren (einfacher, aber möglicherweise nicht perfekt optimiert) und Tools/Bibliotheken wie Critical oder Penthouse (automatisiert, integrierbar in Build-Prozesse). Die Implementierung erfolgt durch Inline-Einbettung des Critical CSS in &amp;lt;style&amp;gt;-Tags im &amp;lt;head&amp;gt; des HTML-Dokuments.&lt;br /&gt;
&lt;br /&gt;
2. Asynchrones Laden von nicht-kritischem CSS und JavaScript&lt;br /&gt;
Nicht-kritisches CSS sind Stile, die nicht für das initiale Above-the-Fold-Rendering benötigt werden. Ladetechniken für CSS umfassen die Verwendung von &amp;lt;link rel=&amp;quot;preload&amp;quot; as=&amp;quot;style&amp;quot; onload=&amp;quot;this.onload=null;this.rel=&amp;#039;stylesheet&amp;#039;&amp;quot;&amp;gt; oder die Verwendung von media=&amp;quot;print&amp;quot; und das Austauschen zu media=&amp;quot;all&amp;quot; beim Laden. Nicht-kritisches JavaScript sind Skripte, die nicht für das initiale Seitenrendering oder die Interaktivität unerlässlich sind. Ladetechniken für JS umfassen die Attribute async und defer bei &amp;lt;script&amp;gt;-Tags. async lädt das Skript asynchron herunter und führt es aus, sobald es heruntergeladen ist, möglicherweise unterbricht es das HTML-Parsing. defer lädt das Skript asynchron herunter, führt es aber erst nach Abschluss des HTML-Parsings aus und in der Reihenfolge, in der sie im Dokument erscheinen.&lt;br /&gt;
&lt;br /&gt;
3. Vorladen von Schlüsselressourcen (rel=&amp;quot;preload&amp;quot;)&lt;br /&gt;
&amp;lt;link rel=&amp;quot;preload&amp;quot;&amp;gt; informiert den Browser, eine Ressource mit hoher Priorität abzurufen, da sie bald benötigt wird, typischerweise für Ressourcen, die vom Browser spät entdeckt werden. Der Browser ruft die Ressource ab und speichert sie im Cache, führt jedoch Skripte nicht aus oder wendet Stylesheets nicht sofort an. Anwendungsfälle umfassen CSS-Dateien, JavaScript-Dateien (kritische Chunks), Web-Fonts (erfordert crossorigin-Attribut) und Bilder (kritische Above-the-Fold-Bilder). Die Implementierung erfolgt über &amp;lt;link rel=&amp;quot;preload&amp;quot; href=&amp;quot;critical.js&amp;quot; as=&amp;quot;script&amp;quot;&amp;gt;, wobei das as-Attribut (z.B. style, script, font, image) entscheidend für die korrekte Priorisierung ist. Preloading kann LCP (für Fonts, Bilder) und INP verbessern und helfen, CLS (für Fonts) zu reduzieren. Es sollten nur kritische Ressourcen vorgeladen werden, da ein Überladen die Performance durch Ressourcenkonkurrenz beeinträchtigen kann.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
C. Asset-Optimierung&lt;br /&gt;
1. Bildoptimierung&lt;br /&gt;
Bilder machen oft den größten Teil des Seitengewichts aus. Moderne Formate wie WebP (bessere Kompression als JPEG/PNG, unterstützt Transparenz und Animation) und AVIF (noch effizienter als WebP, lizenzfrei) sollten bevorzugt werden. Das &amp;lt;picture&amp;gt;-Element kann für Art Direction und Fallbacks verwendet werden. Die Kompression sollte zwischen Dateigröße und visueller Qualität abgewogen werden (verlustbehaftet vs. verlustfrei). Responsive Bilder sollten mit srcset und sizes für verschiedene Bildschirmgrößen und Auflösungen bereitgestellt werden. Native Lazy Loading (loading=&amp;quot;lazy&amp;quot;) für Bilder unterhalb des Falzes verbessert die initiale Ladezeit. Die Angabe von width- und height-Attributen bei &amp;lt;img&amp;gt;-Tags verhindert Layoutverschiebungen (CLS).&lt;br /&gt;
&lt;br /&gt;
2. Web-Font-Optimierung&lt;br /&gt;
Priorisieren Sie WOFF2 wegen seiner überlegenen Kompression und breiten Browserunterstützung, mit WOFF als Fallback. Die CSS-Eigenschaft font-display (z.B. swap, fallback, optional) steuert das Rendering-Verhalten während des Ladens und verhindert FOUT/FOIT. Font-Subsetting, d.h. das Einbeziehen nur der benötigten Zeichen, reduziert die Dateigröße drastisch. Kritische Fonts sollten mit &amp;lt;link rel=&amp;quot;preload&amp;quot;&amp;gt; vorgeladen werden. Selbsthosting bietet mehr Kontrolle über Caching, während Drittanbieterdienste einfach zu verwenden sind und Fonts möglicherweise bereits im Browser des Nutzers zwischengespeichert sind.&lt;br /&gt;
Die Optimierung von Bildern und Schriftarten ist keine isolierte Aufgabe, sondern eine entscheidende Voraussetzung für gute LCP-, CLS- und sogar INP-Werte. Diese Assets sind oft die direkten Kandidaten für diese Metriken oder beeinflussen stark das Rendering und die Interaktivität von Elementen, die es sind. Das Largest Contentful Element ist häufig ein Bild oder ein großer Textblock. Optimierte Bilder laden schneller. Vorgeladene und optimierte Schriftarten stellen sicher, dass Text schnell und korrekt gerendert wird. Nicht dimensionierte Bilder sind eine Hauptursache für Layoutverschiebungen. Web-Schriftarten, die mit signifikanten Unterschieden zu Fallback-Schriftarten geladen werden, verursachen ebenfalls CLS. &lt;br /&gt;
IV. Server-seitige und Netzwerk-Performance-Optimierung&lt;br /&gt;
A. Content Delivery Networks (CDNs)&lt;br /&gt;
Ein CDN ist ein geografisch verteiltes Netzwerk von Proxy-Servern, das statische Inhalte (Bilder, CSS, JS) in Servern (Points of Presence - PoPs) näher am Endnutzer zwischenspeichert. Anfragen werden vom nächstgelegenen PoP bedient, was die Latenz reduziert.&lt;br /&gt;
CDN - Wichtige Vor- und Nachteile&lt;br /&gt;
&lt;br /&gt;
Aspekt&lt;br /&gt;
Beschreibung&lt;br /&gt;
Vorteile&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Schnellere Ladezeiten&lt;br /&gt;
Reduzierte Latenz durch geografische Nähe der Server zu den Nutzern.28&lt;br /&gt;
Geringere Bandbreitenkosten&lt;br /&gt;
Entlastung des Ursprungsservers von Traffic, da Inhalte von CDN-Servern ausgeliefert werden.28&lt;br /&gt;
Erhöhte Verfügbarkeit&lt;br /&gt;
Lastverteilung, Bewältigung von Traffic-Spitzen, Redundanz bei Ausfall des Ursprungsservers.29&lt;br /&gt;
Verbesserte Sicherheit&lt;br /&gt;
Können DDoS-Schutz und Web Application Firewalls (WAF) bieten.28&lt;br /&gt;
Skalierbarkeit&lt;br /&gt;
Fähigkeit, große Mengen an Traffic zu bewältigen und sich an neue Bandbreitenanforderungen anzupassen.28&lt;br /&gt;
Nachteile&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kosten&lt;br /&gt;
CDN-Dienste sind mit Kosten verbunden, obwohl kostenlose Tarife existieren.29&lt;br /&gt;
Komplexität&lt;br /&gt;
Einrichtung und Verwaltung können die Infrastruktur komplexer machen.28&lt;br /&gt;
Kontrollverlust (teilweise)&lt;br /&gt;
Daten befinden sich auf Servern von Drittanbietern, was einen gewissen Kontrollverlust bedeutet.28&lt;br /&gt;
Dynamische Inhalte&lt;br /&gt;
Primär für statische Inhalte; dynamische Inhalte erfordern oft Anfragen an den Ursprungsserver, obwohl Lösungen existieren.28&lt;br /&gt;
Cache-Invalidierung&lt;br /&gt;
Sicherstellung der Aktualität zwischengespeicherter Inhalte kann herausfordernd sein.&lt;br /&gt;
SEO-Probleme (Fehlkonfig.)&lt;br /&gt;
Falsch konfigurierte CDNs können zu Problemen mit der Kanonisierung oder veralteten Inhalten führen.28&lt;br /&gt;
&lt;br /&gt;
B. Caching-Strategien&lt;br /&gt;
1. Browser Caching (Client-Seite)&lt;br /&gt;
Nutzt HTTP-Header, um den Browser anzuweisen, wie Ressourcen lokal zwischengespeichert werden sollen. Reduziert Serverlast und verbessert Ladezeiten für wiederholte Besuche. Wichtige HTTP-Header sind Cache-Control (mit Direktiven wie public, private, no-cache, max-age), Expires, ETag und Last-Modified.&lt;br /&gt;
2. Server-seitiges Caching&lt;br /&gt;
Speichert häufig abgerufene Daten oder vorberechnete Antworten auf dem Server, um die Verarbeitungslast und Datenbankabfragen zu reduzieren.30 Typen umfassen Full-Page Caching, Object Caching (z.B. mit Redis, Memcached), Opcode Caching und Datenbankabfrage-Caching.&lt;br /&gt;
3. Reverse Proxy Caching (z.B. Varnish, Nginx)&lt;br /&gt;
Ein Reverse Proxy sitzt vor den Webservern und kann Antworten zwischenspeichern, wodurch Anfragen direkt bedient werden, ohne den Ursprungsserver zu belasten.&lt;br /&gt;
4. Cache-Invalidierungs-Techniken&lt;br /&gt;
Sicherstellen, dass bei Datenänderungen die zwischengespeicherte Version aktualisiert oder entfernt wird, um die Bereitstellung veralteter Inhalte zu verhindern. Methoden umfassen TTL-basiertes Ablaufen, Purging, Write-Through Cache, ereignisgesteuerte Invalidierung, Versionierung und Stale-While-Revalidate.&lt;br /&gt;
Effektives Caching erfordert eine mehrschichtige Strategie (Browser, CDN, serverseitig, Reverse Proxy). Obwohl diese Schichten symbiotisch zusammenarbeiten, um die Leistung zu verbessern, können Fehlkonfigurationen oder unkoordinierte Cache-Invalidierungsrichtlinien zu unerwarteten Problemen mit veralteten Inhalten führen oder die Vorteile des Cachings zunichtemachen. Browser-Caching reduziert Netzwerkanfragen. CDN-Caching reduziert Anfragen an den Ursprungsserver. Serverseitiges Caching reduziert die Verarbeitung am Ursprungsserver. Jede Schicht hat jedoch ihre eigene Cache-Dauer (TTL) und Invalidierungsmechanismen. Wenn eine Ressource auf dem Ursprungsserver aktualisiert wird und der serverseitige Cache invalidiert wird, aber der CDN-Cache eine längere TTL hat und nicht aktiv geleert wird, erhalten Benutzer weiterhin die veraltete Version vom CDN. Dies unterstreicht die Notwendigkeit einer ganzheitlichen Sichtweise, bei der Cache-Control-Header, CDN-TTLs und serverseitige Invalidierungsstrategien koordiniert werden.&lt;br /&gt;
C. Verbesserung der Serverantwort und -auslieferung&lt;br /&gt;
1. Reduzierung der Time To First Byte (TTFB)&lt;br /&gt;
TTFB misst die Zeit von der initialen Anfrage bis zum Empfang des ersten Bytes der HTML-Antwort durch den Browser. Strategien umfassen Serverkonfiguration und -aktualisierung, Effizienz des Backend-Codes und Datenbankoptimierung (effiziente Abfragen, Indizierung, Verbindungspooling).&lt;br /&gt;
2. Textkomprimierung (GZIP, Brotli)&lt;br /&gt;
Komprimiert textbasierte Assets (HTML, CSS, JS) vor dem Senden vom Server zum Browser. GZIP ist weit verbreitet, Brotli bietet bessere Kompressionsraten.31 Dies reduziert Dateigrößen erheblich, was zu schnelleren Downloads führt.&lt;br /&gt;
3. Moderne Netzwerkprotokolle: HTTP/2 und HTTP/3 (QUIC) Vorteile&lt;br /&gt;
HTTP/1.1-Beschränkungen umfassen Head-of-Line-Blocking und textbasierte Header. HTTP/2 bietet Multiplexing (gleichzeitige Anfragen über eine TCP-Verbindung), Header-Komprimierung (HPACK), Server Push und ein binäres Protokoll. HTTP/3 läuft auf QUIC (UDP-basiert), löst TCP Head-of-Line-Blocking auf Transportebene, ermöglicht schnellere Verbindungsherstellung (0-RTT) und verbesserte Verbindungsmigration, mit standardmäßiger Verschlüsselung.&lt;br /&gt;
V. Fortgeschrittene Performance-Überlegungen&lt;br /&gt;
A. Web-Rendering-Strategien: CSR, SSR, SSG, Prerendering&lt;br /&gt;
Client-Side Rendering (CSR): Der Browser lädt eine minimale HTML-Hülle und JavaScript. JS ruft dann Daten ab und rendert den Seiteninhalt im Browser.&lt;br /&gt;
Vorteile: Hohe Interaktivität, schneller TTFB für die Hülle.&lt;br /&gt;
Nachteile: Langsames initiales Laden (FCP, LCP, TTI können hoch sein), schlechtes SEO ohne sorgfältige Handhabung.&lt;br /&gt;
Server-Side Rendering (SSR): Der Server generiert das vollständige HTML für eine Seite als Antwort auf eine Browseranfrage.&lt;br /&gt;
Vorteile: Schnellerer FCP/LCP, gut für SEO, aktuelle Inhalte.&lt;br /&gt;
Nachteile: Langsamerer TTFB, höhere Serverlast.&lt;br /&gt;
Static Site Generation (SSG): Alle HTML-Seiten werden zur Build-Zeit vorab generiert und als statische Dateien bereitgestellt.&lt;br /&gt;
Vorteile: Schnellster TTFB und Ladezeiten, sehr sicher, exzellent für SEO.&lt;br /&gt;
Nachteile: Lange Build-Zeiten für große Seiten, Inhalte können bis zum nächsten Build veraltet sein.&lt;br /&gt;
Prerendering (und hybride Ansätze): Generierung von statischem HTML für bestimmte Routen zur Build-Zeit, während die Haupt-App CSR sein kann. Universelles/Isomorphes Rendering: Initiale Seitenladung ist SSR, dann übernimmt clientseitiges JS.&lt;br /&gt;
Jede Strategie hat unterschiedliche Auswirkungen auf LCP, TTI, TTFB und SEO.&lt;br /&gt;
Die Wahl der Rendering-Strategie (CSR, SSR, SSG, Hybrid) ist nicht nur ein technisches Implementierungsdetail, sondern eine grundlegende architektonische Entscheidung, die nicht nur alle Core Web Vitals und die Gesamtleistung tiefgreifend beeinflusst, sondern auch die SEO-Effektivität, Entwicklungskomplexität, Infrastrukturkosten und die Fähigkeit zur Inhaltsdynamik. Diese Wahl muss mit den Kernanforderungen der Web-Anwendung übereinstimmen. SSR und SSG sind im Allgemeinen besser für SEO geeignet. SSR kann serverintensiv sein, während SSG sehr günstig zu hosten ist. SSR und hybride Modelle können die Entwicklungskomplexität erhöhen. SSG ist ungeeignet für stark personalisierte oder Echtzeit-Inhalte. &lt;br /&gt;
VI. Der Business Case für Web-Performance&lt;br /&gt;
A. Auswirkungen auf Key Performance Indicators (KPIs)&lt;br /&gt;
Konversionsraten: Schnellere Ladezeiten korrelieren direkt mit höheren Konversionsraten. Schon eine Sekunde Verzögerung kann zu einem signifikanten Rückgang führen. Eine Fallstudie zeigte einen Umsatzanstieg von 70% nach Optimierung der Ladezeit von 6.2s auf 2.8s.&lt;br /&gt;
Absprungraten: Langsamere Seiten führen zu höheren Absprungraten. 40% der Nutzer verlassen eine Seite, wenn sie länger als 3 Sekunden lädt.&lt;br /&gt;
Nutzerengagement &amp;amp; Sitzungsdauer: Schnellere Seiten ermutigen Nutzer, länger zu bleiben und mehr Seiten anzusehen. Seiten, die in &amp;lt; 5s laden, haben 70% längere Sitzungen.&lt;br /&gt;
SEO-Rankings: Google verwendet Seitengeschwindigkeit und Core Web Vitals als Rankingfaktoren.&lt;br /&gt;
Kundenzufriedenheit &amp;amp; Markenglaubwürdigkeit: Schnelle, zuverlässige Seiten bauen Vertrauen und Zufriedenheit auf.&lt;br /&gt;
B. Return on Investment (ROI) der Performance-Optimierung&lt;br /&gt;
Performance ist kein Kostenfaktor, sondern eine Investition mit greifbaren Erträgen. Dies umfasst gesteigerte Einnahmen durch höhere Konversionen, reduzierte Betriebskosten (z.B. geringere Bandbreitennutzung) und niedrigere Marketingkosten durch besseres SEO. &lt;br /&gt;
Angesichts der direkten und signifikanten Auswirkungen der Web-Performance auf Geschäfts-KPIs und den ROI kann Performance kein einmaliges Projekt sein. Sie erfordert kontinuierliche Überwachung, die Festlegung von Performance-Budgets und die Integration in CI/CD-Pipelines, um Regressionen zu verhindern und sich proaktiv an sich ändernde Nutzererwartungen und Geschäftsziele anzupassen. Dies verwandelt Performance von einer reaktiven Fehlerbehebung in einen proaktiven strategischen Vorteil. Webseiten sind dynamisch; neue Funktionen und Inhalte stellen ein Risiko für die Performance dar. Wenn die Performance nachlässt, leiden die Geschäfts-KPIs. Daher ist die Aufrechterhaltung einer guten Performance für den nachhaltigen Geschäftserfolg unerlässlich.&lt;/div&gt;</summary>
		<author><name>Völkl Anna</name></author>
	</entry>
</feed>