{"id":12512,"date":"2021-02-27T12:16:16","date_gmt":"2021-02-27T11:16:16","guid":{"rendered":"https:\/\/blog.mi.hdm-stuttgart.de\/?p=12512"},"modified":"2023-06-18T18:06:53","modified_gmt":"2023-06-18T16:06:53","slug":"progressive-web-apps-wer-braucht-noch-native-apps","status":"publish","type":"post","link":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2021\/02\/27\/progressive-web-apps-wer-braucht-noch-native-apps\/","title":{"rendered":"Progressive Web Apps &#8211; Wer braucht noch native Apps?"},"content":{"rendered":"\n<p>Progressive Web Apps sollen es erm\u00f6glichen die Vorteile des Webs und die nativer Apps zu nutzen, um so f\u00fcr jeden, \u00fcberall und auf jedem Ger\u00e4t, nutzbar zu sein. Was Progressive Web Apps eigentlich sind, welche Vor- und Nachteile sie mit sich bringen und ob sie in Zukunft native Apps komplett ersetzen k\u00f6nnen, soll in diesem Artikel beantwortet werden.&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Was sind Progressive Web Apps?<\/h2>\n\n\n\n<p>Der Name Progressive Web Apps (PWA) ist kein formeller oder offizieller Name sondern nur eine Abk\u00fcrzung. Diese wurde urspr\u00fcnglich von Google f\u00fcr das Konzept verwendet, eine flexible und anpassbare App nur mit Webtechnologien (HTML, CSS, JavaScript) zu erstellen.<br>Der Begriff <em>Progressive<\/em> im Namen kommt daher, dass das Konzept PWA auf der Design Philosophie&nbsp;<em>Progressive Enhancement&nbsp;<\/em>basiert.[1] Diese besagt, dass so vielen Nutzern wie m\u00f6glich die grundlegende Funktionalit\u00e4t zur Verf\u00fcgung gestellt werden soll. Mithilfe von Feature Detection wird in der Implementierung \u00fcberpr\u00fcft, ob der Browser mit der gew\u00fcnschten Funktion umgehen kann. Falls dies nicht der Fall ist, wird eine alternative Implementierung mittels Polyfills bereitgestellt, um die fehlende Funktion mit JavaScript hinzuzuf\u00fcgen. Dadurch wird eine ausgezeichnete Erfahrung f\u00fcr voll leistungsf\u00e4hige Browser erm\u00f6glicht und eine akzeptable Erfahrung f\u00fcr weniger leistungsf\u00e4hige Browser.[2]<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>&#8220;These apps aren&#8217;t packaged and deployed through stores, they&#8217;re just websites that took all the right vitamins.&#8221;<\/p><cite>Alex Russell [3]<\/cite><\/blockquote>\n\n\n\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\">\n<p>Wie Alex Russell, der als Google Engineer das PWA Konzept mitentwickelt hat, mit seinem Zitat beschreibt, sind PWAs im Kern einfache Webanwendungen. Mithilfe von speziellen Technologien und Patterns wollen sie die Vorteile des Webs und die nativer Apps nutzen. Hierzu z\u00e4hlen beispielsweise die einfache Auffindbarkeit im Web oder die M\u00f6glichkeit der Offline-Nutzung nativer Apps.[1], [4]<br>Um eine bestm\u00f6gliche Nutzererfahrung zu erzielen, die sich anf\u00fchlt wie bei einer plattformspezifischen Anwendung hat Google drei S\u00e4ulen definiert, die eine PWA erf\u00fcllen sollte:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>capable (f\u00e4hig<\/strong>): Durch die Verwendung von modernen APIs werden Webanwendungen immer leistungsf\u00e4higer und erm\u00f6glichen die Implementierung nativer M\u00f6glichkeiten, zum Beispiel den Dateisystemzugriff oder die Mediensteuerung.<\/li><li><strong>reliable (zuverl\u00e4ssig)<\/strong>: Benutzer erwarten, dass Anwendungen immer schnell und verl\u00e4sslich sind, unabh\u00e4ngig von der Netzwerkverbindung. Interaktionen sollten immer schnell erkannt werden und es sollte so schnell wie m\u00f6glich darauf reagiert werden. Denn gerade die Geschwindigkeit ist wichtig f\u00fcr die UX.<\/li><li><strong>installable (installierbar)<\/strong>: \u00dcber den Add2Homescreen-Button sollte die PWA installierbar sein, um in einem eigenst\u00e4ndigen Browserfenster zu laufen. Dadurch verh\u00e4lt sich die PWA auf der einen Seite wie eine native App. Auf der anderen Seite \u00e4ndert der Nutzer seine Interaktion mit der App, da die App nun vom Homescreen oder vom Appswitcher gestartet werden kann.[4]<\/li><\/ul>\n<\/div><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Aussehen und Lebenszyklus einer PWA<\/h3>\n\n\n\n<p>Der Lebenszyklus beginnt wie bei einer normalen Webseite im Browser. Durch das Anzeigen des Add2Homescreen- Buttons (im Moment nur bei Android Ger\u00e4ten m\u00f6glich) kann der Nutzer die App zum Homescreen hinzuf\u00fcgen. Auf dem Homescreen wird das Appicon analog zu einer nativen App dargestellt. \u00d6ffnet man nun die App \u00fcber den Homescreen, \u00f6ffnet sich die PWA im Standalone- Modus und sie sieht aus wie eine native App. Au\u00dferdem wird sie, wie auch native Apps, im Appswitcher angezeigt.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/02\/Bildschirmfoto-2021-02-26-um-12.21.05.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"357\" data-attachment-id=\"12519\" data-permalink=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2021\/02\/27\/progressive-web-apps-wer-braucht-noch-native-apps\/bildschirmfoto-2021-02-26-um-12-21-05\/\" data-orig-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/02\/Bildschirmfoto-2021-02-26-um-12.21.05.png\" data-orig-size=\"2566,894\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"Bildschirmfoto-2021-02-26-um-12.21.05\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/02\/Bildschirmfoto-2021-02-26-um-12.21.05-1024x357.png\" src=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/02\/Bildschirmfoto-2021-02-26-um-12.21.05-1024x357.png\" alt=\"\" class=\"wp-image-12519\" srcset=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/02\/Bildschirmfoto-2021-02-26-um-12.21.05-1024x357.png 1024w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/02\/Bildschirmfoto-2021-02-26-um-12.21.05-300x105.png 300w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/02\/Bildschirmfoto-2021-02-26-um-12.21.05-768x268.png 768w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/02\/Bildschirmfoto-2021-02-26-um-12.21.05-1536x535.png 1536w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/02\/Bildschirmfoto-2021-02-26-um-12.21.05-2048x714.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption>Aussehen und Lebenszyklus einer PWA [3]<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Wie wird aus einer Webanwendung eine PWA?<\/h2>\n\n\n\n<p>Bei Web Anwendungen ist es nicht immer direkt ersichtlich, ob es sich um eine reine Web Anwendung handelt oder um eine PWA. Damit eine Web Anwendung als PWA erkannt wird, muss sie bestimmte technische und funktionale Anforderungen erf\u00fcllen.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Technische Anforderungen<\/h3>\n\n\n\n<p>Aus technischer Sicht sollte eine Web Anwendung die folgenden drei Eigenschaften haben, um als PWA zu gelten:<br><br><strong>HTTPS<\/strong> &#8211; Die Verwendung einer sicheren Netzwerkverbindung ist nicht nur Best Practice, sondern bietet auch den Vorteil, dass Nutzer der Webseite vertrauen. Zus\u00e4tzlich ist eine sichere Verbindung mittels HTTPS die Voraussetzung f\u00fcr die Nutzung vieler Funktionen, die in PWAs verwendet werden. Hierzu z\u00e4hlen beispielsweise die Geolokalisierung oder auch die Verwendung eines Service Workers.[5],[7]<\/p>\n\n\n\n<p><strong>Service Worker <\/strong>&#8211; Ein Service Worker ist eine JavaScript-Datei die der Browser im Hintergrund ausf\u00fchrt und welche als programmierbarer Netzwerk Proxy dient. Dadurch kann bestimmt werden, wie der Browser Netzwerkanfragen und Asset-Caching behandelt. Durch die Verwendung eines Service Workers k\u00f6nnen zuverl\u00e4ssige und schnelle Webseiten implementiert werden, die zus\u00e4tzlich Offline-Funktionalit\u00e4t bieten.[5]\u2013[7]<\/p>\n\n\n\n<p><strong>Manifest<\/strong> &#8211; Das Manifest ist eine JSON-Datei die Informationen dar\u00fcber enth\u00e4lt, wie die App aussehen und wie sie sich bei der Installation auf einem mobilen Ger\u00e4t verhalten soll. Zu den wichtigsten Angaben im Manifest z\u00e4hlen unter anderem der App Name, die Icons, die URL, die beim Start der App aufgerufen werden soll und der Anzeigemodus. Dieser bestimmt welche Browser-Benutzeroberfl\u00e4che beim Start der App angezeigt werden soll. Eine ausf\u00fchrlichere Erkl\u00e4rung zum Manifest und zu den entsprechenden Properties kann <a href=\"https:\/\/web.dev\/add-manifest\/\" title=\"https:\/\/web.dev\/add-manifest\/\">hier<\/a> gefunden werden.[5],[7]<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><a href=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/02\/manifest-1.png\"><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"12601\" data-permalink=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2021\/02\/27\/progressive-web-apps-wer-braucht-noch-native-apps\/manifest-1\/\" data-orig-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/02\/manifest-1.png\" data-orig-size=\"1064,1446\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"manifest-1\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/02\/manifest-1-753x1024.png\" src=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/02\/manifest-1-753x1024.png\" alt=\"\" class=\"wp-image-12601\" width=\"348\" height=\"472\" srcset=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/02\/manifest-1-753x1024.png 753w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/02\/manifest-1-221x300.png 221w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/02\/manifest-1-768x1044.png 768w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/02\/manifest-1.png 1064w\" sizes=\"auto, (max-width: 348px) 100vw, 348px\" \/><\/a><figcaption>Beispiel manifest.json<\/figcaption><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Funktionale Anforderungen<\/h3>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>&#8221; Progressive Web Apps (PWA) are built and enhanced with modern APIs to deliver enhanced capabilities, reliability, and installability while reaching anyone, anywhere, on any device with a single codebase.&#8221;<\/p><cite>Google [4]<\/cite><\/blockquote>\n\n\n\n<p>Wie Google beschreibt, sollten PWAs f\u00e4hig, zuverl\u00e4ssig und installierbar sein, um eine bestm\u00f6gliche Nutzererfahrung zu erzielen. Dazu hat Google zwei PWA-Checklisten erstellt:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong><a href=\"https:\/\/web.dev\/pwa-checklist\/#core\" title=\"https:\/\/web.dev\/pwa-checklist\/#core\">Core PWA Checklist<\/a><\/strong>: enth\u00e4lt Kriterien, welche die PWA installierbar und nutzbar f\u00fcr alle macht. <\/li><li><strong><a href=\"http:\/\/www.web.dev\/pwa-checklist\/#optimal\" title=\"http:\/\/www.web.dev\/pwa-checklist\/#optimal\">Optimal PWA Checklist<\/a><\/strong>: enth\u00e4lt Kriterien, um eine PWA zu entwicklen, die eine bestm\u00f6gliche Nutzererfahrung bietet und gleichzeitig die Vorteile nutzt, die das Web leistungsstark machen.<\/li><\/ul>\n\n\n\n<p>Zus\u00e4tzlich hat das Mozilla Developer Network (MDN) Prinzipien definiert, die eine PWA implementieren sollte, um als solche identifiziert zu werden:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>auffindbar<\/strong>: Die App kann mithilfe von Suchmaschinen gefunden werden.<\/li><li><strong>installierbar:&nbsp;<\/strong>Die App kann vom Homescreen aus gestartet werden.<\/li><li><strong>verlinkbar:&nbsp;<\/strong>Die App kann durch das Versenden einer URL geteilt werden.<\/li><li><strong>netzwerkunabh\u00e4ngig:&nbsp;<\/strong>Die App funktioniert auch bei schlechter\/ keiner Netzwerkverbindung.<\/li><li><strong>progressiv:&nbsp;<\/strong>Anwendung von Progressive Enhancement bei der Entwicklung der App.<\/li><li><strong>responsive:&nbsp;<\/strong>Die App ist auf jedem Ger\u00e4t nutzbar.<\/li><li><strong>sicher:&nbsp;<\/strong>Verbindungen sind vor dem Zugriff von Dritten gesch\u00fctzt.[1]<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Architektur einer PWA<\/h2>\n\n\n\n<p>Der beliebteste Ansatz eine PWA zu bauen, ist das&nbsp;<strong>App-Shell-<\/strong>Konzept. Dieses Konzept stellt einen Mix aus serverseitigem Rendern und clientseitigem Rendern dar und verwendet zus\u00e4tzlich den offline-first Ansatz. Dabei werden f\u00fcr die Darstellung einer minimalen UI, die minimalen HTML-, CSS- und JavaScript-Dateien so fr\u00fch wie m\u00f6glich geladen. Gleichzeitig werden diese direkt gecached, sodass sie auch offline verf\u00fcgbar sind. Hierbei handelt es sich sozusagen um das Skelett der Benutzeroberfl\u00e4che. Beim n\u00e4chsten Aufruf der Seite wird die UI aus dem Cache geladen und es m\u00fcssen nur die Inhalte vom Server angefordert werden, welche sich noch nicht im Cache befinden. Mithilfe des Service Workers kann hier gesteuert werden, welche Inhalte gecached werden sollen. Die Verwendung einer App-Shell und das dynamische Laden des Inhalts bietet vor allem einen Performance Vorteil. Zus\u00e4tzlich f\u00fchlt sich die Anwendung f\u00fcr den Nutzer sehr schnell und zuverl\u00e4ssig an, da der Nutzer sofort etwas sieht. Im Kontrast hierzu stehen wei\u00dfe Seiten oder Ladeanzeigen, wie bei einer nativen Anwendung.[8], [9]<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"alignleft size-large is-resized\"><a href=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/02\/appshell.png\"><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"12528\" data-permalink=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2021\/02\/27\/progressive-web-apps-wer-braucht-noch-native-apps\/appshell\/\" data-orig-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/02\/appshell.png\" data-orig-size=\"743,550\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"appshell\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/02\/appshell.png\" src=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/02\/appshell.png\" alt=\"\" class=\"wp-image-12528\" width=\"487\" height=\"360\" srcset=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/02\/appshell.png 743w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/02\/appshell-300x222.png 300w\" sizes=\"auto, (max-width: 487px) 100vw, 487px\" \/><\/a><figcaption>Beispiel einer App-Shell und des dynamischen Inhalts [8]<\/figcaption><\/figure><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Unterst\u00fctzung der Browser<\/h2>\n\n\n\n<p>Neben den technischen und funktionalen Anforderungen einer PWA ist es auch wichtig einen Blick auf die Browserkompatibilit\u00e4t zu werfen. Diese beinhaltet Funktionen und APIs die letztendlich die PWAs zu nativen Apps vergleichbar machen.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Projekt Fugu<\/strong><\/h3>\n\n\n\n<p>Heutzutage ist es zwar m\u00f6glich durch Web APIs auf native Funktionen zuzugreifen allerdings nicht auf alle. Diese L\u00fccke zwischen den M\u00f6glichkeiten die das Web bietet und die der nativen Anwendungen nennt Google&nbsp;<em>App Gap<\/em>. Das Projekt Fugu versucht diese L\u00fccke zu schlie\u00dfen.<br>Es ist ein Web Capabilites Projekt von Google, Microsoft und Intel bei dem der Browserunterbau Chromium weiterentwickelt wird. Auf diesem basieren unter anderem die Browser Google Chrome, Samsung Internet, Opera und die neue Version von Microsoft Egde. Im Projekt Fugu wird kontinuierlich evaluiert, welche nativen Funktionen gebraucht werden um daf\u00fcr Web APIs zu entwickeln. Die Web APIs sind dabei so aufgebaut, dass die Plattformunterschiede abstrahiert werden. Das hei\u00dft der Webbrowser fungiert als zus\u00e4tzliche Schicht zwischen Anwendung und Endger\u00e4t und ruft die passende native Schnittstelle auf. <br>Der Name des Projekts&nbsp;<em>Fugu&nbsp;<\/em>kommt \u00fcbrigens daher, dass dieser Fisch in Japan unter richtiger Zubereitung eine Delikatesse ist. Ist dies nicht der Fall, ist der Fisch giftig. Im \u00fcbertragenden Sinne ist hier also gemeint, dass die Entwicklung der APIs zu hervorragenden Anwendungen f\u00fchren kann. Das ist allerdings nur m\u00f6glich, wenn bei der Entwicklung immer die Kernwerte des Webs; die Sicherheit, das Vertrauen und die Privatsph\u00e4re gewahrt bleiben.[10], [11] <br>Auf der <a href=\"https:\/\/fugu-tracker.web.app\" title=\"https:\/\/fugu-tracker.web.app\">Fugu-Tracker Seite<\/a> kann man sich anschauen, welche APIs schon umgesetzt worden sind oder in welchem Entwicklungsstadium sie sich befinden.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"alignleft size-large\"><a href=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/02\/fugu.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"362\" data-attachment-id=\"12530\" data-permalink=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2021\/02\/27\/progressive-web-apps-wer-braucht-noch-native-apps\/fugu\/\" data-orig-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/02\/fugu.png\" data-orig-size=\"1785,631\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"fugu\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/02\/fugu-1024x362.png\" src=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/02\/fugu-1024x362.png\" alt=\"\" class=\"wp-image-12530\" srcset=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/02\/fugu-1024x362.png 1024w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/02\/fugu-300x106.png 300w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/02\/fugu-768x271.png 768w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/02\/fugu-1536x543.png 1536w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/02\/fugu.png 1785w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption>Schematische Funktionsweise der Fugu APIs [10]<\/figcaption><\/figure><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Firefox<\/h3>\n\n\n\n<p>Die Entwickler des Firefox Browsers haben Ende 2020 bekannt gegeben, dass die Funktion von Site Specific Browsern (SSB) nicht l\u00e4nger unterst\u00fctzt werden soll. Diese Funktion erm\u00f6glicht es Webseiten in minimaler UI darzustellen, also ohne Browser-Steuerungselemente. Dies ist die Voraussetzung, um eine PWA im Standalone Modus zu nutzen. Bislang war diese Funktion nur versteckt nutzbar und hatte dar\u00fcber hinaus viele Fehler. Au\u00dferdem wurde herausgefunden, dass sie kaum Vorteile bietet. So ist die weitere Unterst\u00fctzung von PWAs im Firefox Browser offen. Auch f\u00fcr die Zukunft gibt es laut den Firefox Entwicklern keine genauen Pl\u00e4ne ob und inwiefern PWAs weiter unterst\u00fctzt werden sollen.[12]<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Safari<\/h3>\n\n\n\n<p>Durch die Einf\u00fchrung der vollst\u00e4ndigen Blockierung von Cookies von Drittanbietern erschwert Apple die Nutzung von PWAs im Safari Browser. Je nach Anwendungsfall braucht eine PWA Zugriff auf die Ger\u00e4te APIs oder technische Strukturen wie den LocalStorage. Durch die Cookie Blockade werden alle lokalen Speicherdaten einer Seite gel\u00f6scht, wenn diese Seite sieben Tage lang nicht verwendet worden ist. Dadurch ist der offline-first Ansatz nicht mehr m\u00f6glich. Schon simple Apps wie eine ToDo-Listen App sind nicht mehr richtig nutzbar, da die gespeicherten Daten nach sieben Tagen gel\u00f6scht werden. Die einzige M\u00f6glichkeit die 7-Tage-L\u00f6sch-Regel zu umgehen, ist die Anwendung zum Homescreen hinzuf\u00fcgen. Allerdings ist das keine Voraussetzung von PWAs. Hier bleibt offen, ob es Apple wirklich um den Datenschutz der Nutzer geht oder ob es nicht auch wirtschaftliche Gr\u00fcnde hat. Apple profitiert durchaus von den Einnahmen aus dem App Store, der mit PWAs umgangen wird.[13] Au\u00dferdem werden auch viele andere Funktionen, wie beispielsweise das Senden von Push-Benachrichtigungen oder das Anzeigen des Add2Homescreen-Buttons noch nicht unterst\u00fctzt.[14]<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Vor- und Nachteile einer PWA im Vergleich zu nativen Apps<\/strong><\/h2>\n\n\n\n<p>Nun stellt sich nat\u00fcrlich die Frage, welche Vorteile PWAs eigentlich im Vergleich zu nativen Apps bieten und an welchen Stellen native Apps den PWAs \u00fcberlegen sind?<br>Der wohl \u00fcberzeugendste Vorteil einer PWA ist, dass mit nur einer Codebasis eine Anwendung implementiert werden kann, die nicht an eine bestimmte Plattform gebunden ist. Das bedeutet daher weniger Entwicklungsaufwand und damit verbunden weniger Entwicklungskosten. Ein weiterer Vorteil ist, dass kein Installieren der Anwendung notwendig ist. Dar\u00fcber hinaus ist auch das Updaten deutlich einfacher, da der Nutzer nicht jede neue Version aus einem App Store laden muss, sondern ein einfacher Reload der Webseite ausreicht. Au\u00dferdem ist durch das Auffinden der Anwendung mithilfe einer Suchmaschine und dem Teilen durch das Versenden einer URL eine einfachere Zug\u00e4nglichkeit m\u00f6glich.<br>Einen Nachteil gegen\u00fcber nativen Apps haben PWAs vor allem bei der Benutzerfreundlichkeit. Die UX einer nativen Anwendung und das Gef\u00fchl, dass die Anwendung Teil des Ger\u00e4ts ist, ist nicht so einfach umzusetzen. Zus\u00e4tzlich stellt die Hardwarezug\u00e4nglichkeit eine weitere Herausforderung f\u00fcr PWAs dar. Diesem Nachteil wird jedoch durch die Verwendung und stetiger Entwicklung von modernen APIs versucht entgegenzuwirken. Mithilfe dieser sollen die F\u00e4higkeiten von nativen Anwendungen auch f\u00fcr PWAs verf\u00fcgbar werden. Ein weiterer Nachteil aus wirtschaftlicher Sicht ist die Monetarisierung, die bei PWAs nicht so einfach umzusetzen ist, wie bei nativen Apps, die kostenpflichtig im App Store erworben werden k\u00f6nnen.[4], [15]<\/p>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table><tbody><tr><td><strong>Vorteile PWA<\/strong><\/td><td><strong>Nachteile PWA<\/strong><\/td><\/tr><tr><td>Single Codebasis \u279c schnellere &amp; <br>g\u00fcnstigere Entwicklung<\/td><td>bestm\u00f6gliche UX schwieriger<\/td><\/tr><tr><td>kein Installieren notwendig<\/td><td>Hardwarezug\u00e4nglichkeit schwieriger<\/td><\/tr><tr><td>einfaches Updaten<\/td><td>Monetarisierung schwieriger<\/td><\/tr><tr><td>Auffindbarkeit<\/td><td><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Performance Test<\/h2>\n\n\n\n<p>Zus\u00e4tzlich zu den allgemeinen Vor- und Nachteilen einer PWA, soll nun die Performance von PWAs im Vergleich zu nativen Apps anhand eines Performance Tests genauer untersucht werden. Dazu wurde eine simple App konzipiert, die performance-kritische Inhalte enth\u00e4lt. Wie in der unterstehenden Abbildung zu sehen, besteht die App aus zwei Ansichten. Die erste Ansicht&nbsp;<em>Lorem Picsum&nbsp;<\/em>enth\u00e4lt viel Text und die zweite Ansicht&nbsp;<em>Gallery&nbsp;<\/em>beinhaltet viele Bilder.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/02\/Bildschirmfoto-2021-02-26-um-12.59.06-1.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"910\" data-attachment-id=\"12599\" data-permalink=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2021\/02\/27\/progressive-web-apps-wer-braucht-noch-native-apps\/bildschirmfoto-2021-02-26-um-12-59-06-1\/\" data-orig-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/02\/Bildschirmfoto-2021-02-26-um-12.59.06-1.png\" data-orig-size=\"1040,924\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"Bildschirmfoto-2021-02-26-um-12.59.06-1\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/02\/Bildschirmfoto-2021-02-26-um-12.59.06-1-1024x910.png\" src=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/02\/Bildschirmfoto-2021-02-26-um-12.59.06-1-1024x910.png\" alt=\"\" class=\"wp-image-12599\" srcset=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/02\/Bildschirmfoto-2021-02-26-um-12.59.06-1-1024x910.png 1024w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/02\/Bildschirmfoto-2021-02-26-um-12.59.06-1-300x267.png 300w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/02\/Bildschirmfoto-2021-02-26-um-12.59.06-1-768x682.png 768w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/02\/Bildschirmfoto-2021-02-26-um-12.59.06-1.png 1040w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption>Implementierte PWA f\u00fcr den Performance Test<\/figcaption><\/figure>\n\n\n\n<p>F\u00fcr den Performance Test wurden die folgenden drei Anwendungen implementiert:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Eine PWA mit Angular (11.0.5)<\/li><li>Eine iOS App (14.2) mit SwiftUI<\/li><li>Eine Android App (11.0) mit Java<\/li><\/ul>\n\n\n\n<p>Um die Performance zu bewerten, wurden zwei Szenarien festgelegt. Im ersten Szenario wurde gemessen, wie schnell die erste Ansicht (Loren Picsum) geladen wird. Im zweiten Szenario wurde die Zeit ermittelt, die der Ansichtswechsel von Ansicht eins (Loren Picsum) zu Ansicht zwei (Gallery) braucht. F\u00fcr jede Anwendung wurden die Szenarien f\u00fcnf mal getestet und anschlie\u00dfend der Mittelwert aus den gemessenen Zeiten berechnet. Die implementierten Apps wurden auf einem MacBook Pro 2016 (PWA) und auf einem iPhone 8 Plus (iOS) getestet. Da zum Testzeitpunkt kein Android Endger\u00e4t zur Verf\u00fcgung stand, wurde hierf\u00fcr auf das Tool BrowserStack zur\u00fcckgegriffen.<br>Die Auswertung (siehe Darstellung unten) zeigt, dass im ersten Szenario die PWA und die iOS App mit einem Mittelwert von jeweils unter einer Sekunde sehr gut abgeschnitten haben. Die Android Implementierung hingegen mit 1,2 Sekunden ist im Vergleich deutlich langsamer. Dieses Ergebnis k\u00f6nnte allerdings auch darauf zur\u00fcckzuf\u00fchren sein, dass f\u00fcr den Performance Test der Android App das Tool BrowserStack verwendet wurde.<br>Im zweiten Szenario hat ebenfalls die PWA am schnellsten reagiert. Die iOS App hat im Vergleich fast doppelt so lang und die Android App fast dreimal so lang gebraucht.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"alignleft size-large\"><a href=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/02\/Bildschirmfoto-2021-02-26-um-13.02.52.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"322\" data-attachment-id=\"12533\" data-permalink=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2021\/02\/27\/progressive-web-apps-wer-braucht-noch-native-apps\/bildschirmfoto-2021-02-26-um-13-02-52\/\" data-orig-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/02\/Bildschirmfoto-2021-02-26-um-13.02.52.png\" data-orig-size=\"1852,582\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"Bildschirmfoto-2021-02-26-um-13.02.52\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/02\/Bildschirmfoto-2021-02-26-um-13.02.52-1024x322.png\" src=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/02\/Bildschirmfoto-2021-02-26-um-13.02.52-1024x322.png\" alt=\"\" class=\"wp-image-12533\" srcset=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/02\/Bildschirmfoto-2021-02-26-um-13.02.52-1024x322.png 1024w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/02\/Bildschirmfoto-2021-02-26-um-13.02.52-300x94.png 300w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/02\/Bildschirmfoto-2021-02-26-um-13.02.52-768x241.png 768w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/02\/Bildschirmfoto-2021-02-26-um-13.02.52-1536x483.png 1536w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/02\/Bildschirmfoto-2021-02-26-um-13.02.52.png 1852w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption>Auswertung des Performance Tests<\/figcaption><\/figure><\/div>\n\n\n\n<p>Zusammenfassend kann also gesagt werden, dass bei diesem Performance Test die PWA mit Abstand am besten abgeschnitten hat. Allerdings muss beachtet werden, dass es sich bei den durchgef\u00fchrten Performance Tests um keine voll umf\u00e4nglichen Tests handelt, sondern diese nur dazu dienen einen ersten Eindruck zu vermitteln. Au\u00dferdem kann nicht davon ausgegangen werden, dass eine PWA bez\u00fcglich Performance immer besser abschneidet als eine native App, da es hier auch immer darauf ankommt mit welchem Framework die PWA umgesetzt wird.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Lighthouse Audits<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Performance Optimierung<\/h3>\n\n\n\n<p>Um die Performance der PWA noch genauer zu analysieren, wurde die Anwendung zus\u00e4tzlich mit dem Tool Lighthouse ausgewertet. Dabei handelt es sich um ein Tool f\u00fcr die Optimierung von Webanwendungen. Welches unter anderem Tests f\u00fcr Performance, Barrierefreiheit, progressive Web Apps und SEO bietet. Lighthouse bewertet die Performance mithilfe der folgenden sechs Metriken:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>First Contentful Paint<\/strong>: Dauer, bis der erste Text oder das erste Bild angezeigt wird<\/li><li><strong>Speed Index<\/strong>: Dauer, wie schnell der Inhalt einer Seite sichtbar bef\u00fcllt wird<\/li><li><strong>Largest Contentful Paint<\/strong>: Zeitpunkt, an dem der gr\u00f6\u00dfte Text oder das gr\u00f6\u00dfteBild angezeigt wird<\/li><li><strong>Time to Interactive<\/strong>: Zeit, die eine Seite ben\u00f6tigt um vollst\u00e4ndig interaktiv zu sein<\/li><li><strong>Total Blocking Time<\/strong>: Summe aller Zeitspannen, in der die Seite nicht auf Benutzereingaben reagieren kann, da der Mainthread blockiert ist<\/li><li><strong>Cumulative Layout Shift<\/strong>: Summe aller unerwarteten Layout-Verschiebungen (ein sichtbares Element \u00e4ndert seine Position von einem Frame zum n\u00e4chsten)<\/li><\/ul>\n\n\n\n<p>Anhand dieser Metriken wird ein Performance Score zwischen 0 und 100 ermittelt. N\u00e4here Informationen zu den Metriken und dem Score k\u00f6nnen <a href=\"https:\/\/web.dev\/lighthouse- performance\/\" title=\"https:\/\/web.dev\/lighthouse- performance\/\">hier<\/a> gefunden werden.<br>Die erste Ansicht hat einen Performance Score von 86 erreicht und die zweite Ansicht einen Score von 58 (siehe Abbildung). Bei beiden Audits ist die Metrik <em>Largest Contentful Paint<\/em> im roten Bereich. Bei der zweiten Ansicht sind zus\u00e4tzlich die Metriken <em>Total Blocking Time<\/em> und <em>Cumulative Layout Shift<\/em> rot. Letzteres liegt vor allem daran, dass diese Ansicht viele Bilder enth\u00e4lt. Diese werden nacheinander geladen und sorgen so f\u00fcr Verschiebungen des Layouts. Das wirkt sich vor allem negativ auf die UX aus.[16], [17]<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"alignleft size-large\"><a href=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/02\/Bildschirmfoto-2021-02-27-um-11.43.07.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"254\" data-attachment-id=\"12576\" data-permalink=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2021\/02\/27\/progressive-web-apps-wer-braucht-noch-native-apps\/bildschirmfoto-2021-02-27-um-11-43-07\/\" data-orig-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/02\/Bildschirmfoto-2021-02-27-um-11.43.07.png\" data-orig-size=\"2078,516\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"Bildschirmfoto-2021-02-27-um-11.43.07\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/02\/Bildschirmfoto-2021-02-27-um-11.43.07-1024x254.png\" src=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/02\/Bildschirmfoto-2021-02-27-um-11.43.07-1024x254.png\" alt=\"\" class=\"wp-image-12576\" srcset=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/02\/Bildschirmfoto-2021-02-27-um-11.43.07-1024x254.png 1024w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/02\/Bildschirmfoto-2021-02-27-um-11.43.07-300x74.png 300w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/02\/Bildschirmfoto-2021-02-27-um-11.43.07-768x191.png 768w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/02\/Bildschirmfoto-2021-02-27-um-11.43.07-1536x381.png 1536w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/02\/Bildschirmfoto-2021-02-27-um-11.43.07-2048x509.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption>Lighthouse Audits vorher<\/figcaption><\/figure><\/div>\n\n\n\n<p><br>Zus\u00e4tzlich enth\u00e4lt der Lighthouse Bericht Empfehlungen, wie die Seite schneller laden k\u00f6nnte und Diagnosen mit weiteren Informationen \u00fcber die Performance der Anwendung. Mithilfe dieser Informationen konnte auch durch die Anwendung einer Text Kompression mittels gzip und der Verwendung von online CSS statt separaten CSS-Dateien, die implementierte PWA verbessert werden. Au\u00dferdem bekamen alle <code class=\"\" data-line=\"\">img<\/code>-Elemente, der verwendeten Bilder der PWA, eine feste Gr\u00f6\u00dfe und wurden in einer geringeren Aufl\u00f6sung als zuvor bereitgestellt. Dadurch konnte der Performance Score der Ansichten deutlich optimiert werden, sodass die erste Ansicht nun einen Score von 97 und die zweite Ansicht einen Score von 98 erreichen konnte. Dar\u00fcber hinaus sind alle Metriken im gr\u00fcnen Bereich. (siehe Abbildung)<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"alignleft size-large\"><a href=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/02\/Bildschirmfoto-2021-02-27-um-11.43.15.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"254\" data-attachment-id=\"12577\" data-permalink=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2021\/02\/27\/progressive-web-apps-wer-braucht-noch-native-apps\/bildschirmfoto-2021-02-27-um-11-43-15\/\" data-orig-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/02\/Bildschirmfoto-2021-02-27-um-11.43.15.png\" data-orig-size=\"2078,516\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"Bildschirmfoto-2021-02-27-um-11.43.15\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/02\/Bildschirmfoto-2021-02-27-um-11.43.15-1024x254.png\" src=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/02\/Bildschirmfoto-2021-02-27-um-11.43.15-1024x254.png\" alt=\"\" class=\"wp-image-12577\" srcset=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/02\/Bildschirmfoto-2021-02-27-um-11.43.15-1024x254.png 1024w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/02\/Bildschirmfoto-2021-02-27-um-11.43.15-300x74.png 300w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/02\/Bildschirmfoto-2021-02-27-um-11.43.15-768x191.png 768w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/02\/Bildschirmfoto-2021-02-27-um-11.43.15-1536x381.png 1536w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/02\/Bildschirmfoto-2021-02-27-um-11.43.15-2048x509.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption>Lighthouse Audits nachher<\/figcaption><\/figure><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">PWA Audits<\/h3>\n\n\n\n<p>Neben der Performance Auswertung sind in diesem Kontext auch die PWA Audits interessant, bei dem mit Lighthouse verschiedene Aspekte einer PWA validiert werden k\u00f6nnen. Die Validierung wird in drei Testbereiche unterteilt:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>fast and reliable<\/strong>: Hier wird \u00fcberpr\u00fcft, ob die Seite schnell und zuverl\u00e4ssig l\u00e4dt, unabh\u00e4ngig von der Netzwerkverbindung.<\/li><li><strong>installable<\/strong>: Hier wird \u00fcberpr\u00fcft, ob die Bedingungen erf\u00fcllt sind, dass die PWA installierbar ist. Dazu z\u00e4hlt unter anderem, dass ein Service Worker registriert ist und dass das Manifest alle notwendigen Voraussetzungen erf\u00fcllt.<\/li><li><strong>PWA Optimierung<\/strong>: Hierzu z\u00e4hlen Aspekte, die eine PWA optimieren, wie beispielsweise, dass der Inhalt responsive ist oder dass die Anwendung HTTPS anstatt HTTP verwendet.<\/li><\/ul>\n\n\n\n<p>Die implementierte PWA hat auch bei diesem Test gut abgeschnitten. Sie erf\u00fcllt in den Testbereichen&nbsp;<em>fast and reliable&nbsp;<\/em>sowie&nbsp;<em>installable&nbsp;<\/em>alle Aspekte. Lediglich im Bereich&nbsp;<em>PWA Optimierung&nbsp;<\/em>wurde ein Aspekt nicht erf\u00fcllt, da aufgrund der Entwicklung mit einem lokalen Server die Verwendung von HTTPS nicht m\u00f6glich war.[18]<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Fazit<\/h2>\n\n\n\n<p>Zusammenfassend l\u00e4sst sich sagen, dass PWAs vor allem den Vorteil bieten, dass sie crossplattform entwickelt werden k\u00f6nnen. Dadurch entstehen weniger Kosten und die Apps k\u00f6nnen auf jedem Ger\u00e4t ohne Installation verwendet werden. Allerdings k\u00f6nnen mit Web APIs noch nicht alle nativen Funktionen implementiert werden. Deshalb, um auf die Eingangsfrage zur\u00fcckzukommen, k\u00f6nnen PWAs im Moment native APPs nicht komplett ersetzen. Google ist zwar ein gro\u00dfer Vorreiter und auch mit dem Projekt Fugu wird versucht die App Gap zu schlie\u00dfen, aber insgesamt gibt es noch zu wenig Unterst\u00fctzung, vor allem von Firefox und Safari. Gerade iPhone Nutzer sind, zumindest im Moment, an Safari gebunden und k\u00f6nnen so nur wenig Funktionalit\u00e4ten von PWAs nutzen.<br>Allerdings ist es abh\u00e4ngig vom Anwendungsfall m\u00f6glich, dass PWAs native Apps ersetzen, wie etwa bei der Bestellung\/Bezahlung in einem Restaurant. F\u00fcr diesen Anwendungsfall wurde beispielsweise von Starbucks eine PWA implementiert, die es den Kunden erm\u00f6glicht schnell und einfach eine Bestellung aufzugeben.<br>Es bleibt auf jeden Fall spannend, was in Zukunft passiert und wie sich PWAs und deren Unterst\u00fctzung weiterentwickeln.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Hands On<\/h2>\n\n\n\n<p>Hier sind noch ein paar weiterf\u00fchrende Links rund um das Thema Progressive Web Apps:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/www.pwastats.com\">PWA Stats<\/a>: Liste mit Statistiken und Neuigkeiten rund um Progressive Web Apps<\/li><li><a href=\"https:\/\/pwa.bar\" title=\"https:\/\/pwa.bar\">PWA Bar<\/a>: Auswahl der besten Progressive Web Apps<\/li><li><a href=\"https:\/\/whatwebcando.today\" title=\"https:\/\/whatwebcando.today\">What Web can do today<\/a>: \u00dcbersicht der verf\u00fcgbaren Funktionen und welche Browser diese unterst\u00fctzen<\/li><li><a href=\"https:\/\/www.pwabuilder.com\" title=\"https:\/\/www.pwabuilder.com\">PWA Builder<\/a>: Open-Source Projekt von Microsoft um PWAs zu erstellen<\/li><li><a href=\"https:\/\/web.dev\/progressive-web-apps\/\" title=\"https:\/\/web.dev\/progressive-web-apps\/\">Web.dev<\/a>: Sammlung von Artikeln der Google Developer zu PWAs<\/li><\/ul>\n\n\n\n<hr class=\"wp-block-separator is-style-wide\" \/>\n\n\n\n<h4 class=\"wp-block-heading\">Quellen<\/h4>\n\n\n\n<p><a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/Progressive_web_apps\/Introduction\" title=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/Progressive_web_apps\/Introduction\">[1] &nbsp;MDN contributors,&nbsp;<em>Introduction to progressive web apps<\/em><\/a><br><a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Glossary\/Progressive_Enhancement\" title=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Glossary\/Progressive_Enhancement\">[2] &nbsp;MDN contributors,&nbsp;<em>Progressive Enhancement<\/em><\/a><br><a href=\"https:\/\/infrequently.org\/2015\/06\/progressive-apps-escaping-tabs-without-losing-our-soul\/\" title=\"https:\/\/infrequently.org\/2015\/06\/progressive-apps-escaping-tabs-without-losing-our-soul\/\">[3] &nbsp;A. Russell,&nbsp;<em>Progressive Web Apps: Escaping Tabs Without Losing Our Soul<\/em><\/a><br><a href=\"https:\/\/web.dev\/what-are-pwas\/\" title=\"https:\/\/web.dev\/what-are-pwas\/\">[4] &nbsp;P. LePage, Sam Richard,&nbsp;<em>What are Progressive Web Apps?<\/em><\/a><br><a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/Progressive_web_apps\" title=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/Progressive_web_apps\">[5] &nbsp;MDN contributors,&nbsp;<em>Progressive web apps (PWAs)<\/em><\/a><br><a href=\"https:\/\/developers.google.com\/web\/fundamentals\/primers\/service-workers\" title=\"https:\/\/developers.google.com\/web\/fundamentals\/primers\/service-workers\">[6] &nbsp;M. Gaunt,&nbsp;<em>Service Workers: an Introduction<\/em><\/a><br><a href=\"https:\/\/web.dev\/add-manifest\/\" title=\"https:\/\/web.dev\/add-manifest\/\">[7] &nbsp;F. Beaufort, Pete LePage,&nbsp;<em>Add a web app manifest<\/em><\/a><br><a href=\"https:\/\/developers.google.com\/web\/fundamentals\/architecture\/app-shell\" title=\"https:\/\/developers.google.com\/web\/fundamentals\/architecture\/app-shell\">[8] &nbsp;A. Osmani,&nbsp;<em>The App Shell Model<\/em><\/a><br><a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/Progressive_web_apps\/App_structure\" title=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/Progressive_web_apps\/App_structure\">[9] &nbsp;MDN contributors,&nbsp;<em>Progressive web app structure<\/em><\/a><br><a href=\"https:\/\/www.thinktecture.com\/en\/pwa\/fugu\/\" title=\"https:\/\/www.thinktecture.com\/en\/pwa\/fugu\/\">[10] C. Liebel,&nbsp;<em>Project Fugu \u2013 neue F\u00e4higkeiten braucht das Web<\/em><\/a><br><a href=\"https:\/\/medium.com\/swlh\/what-is-project-fugu-googles-initiative-to-unlock-all-native-device-features-for-the-web-892fafa726f9\" title=\"https:\/\/medium.com\/swlh\/what-is-project-fugu-googles-initiative-to-unlock-all-native-device-features-for-the-web-892fafa726f9\">[11] &nbsp;K. M\u00fcnster,&nbsp;<em>What Is Project Fugu \u2014 Google\u2019s Initiative To Unlock All Native Device Features For The We<\/em><\/a><br><a href=\"https:\/\/www.golem.de\/news\/mozilla-firefox-soll-pwa-nicht-unterstuetzten-2012-153107.html\" title=\"https:\/\/www.golem.de\/news\/mozilla-firefox-soll-pwa-nicht-unterstuetzten-2012-153107.html\">[12] &nbsp;S. Gr\u00fcner,&nbsp;<em>Firefox soll PWA nicht unterst\u00fctzen<\/em><\/a><br><a href=\"https:\/\/t3n.de\/news\/deckmantel-guten-apples-neuer-1266784\/\" title=\"https:\/\/t3n.de\/news\/deckmantel-guten-apples-neuer-1266784\/\">[13] &nbsp;D. Petereit,&nbsp;<em>Unter dem Deckmantel des Guten: Apples neuer Safari-Browser behindert die Entwicklung von progressiven Web-Apps<\/em><\/a><br><a href=\"https:\/\/whatwebcando.today\" title=\"https:\/\/whatwebcando.today\">[14] &nbsp;A. Bar,&nbsp;<em>What web can do today?<\/em><\/a><br><a href=\"https:\/\/www.adjust.com\/blog\/native-app-vs-progressive-web-app\/\" title=\"https:\/\/www.adjust.com\/blog\/native-app-vs-progressive-web-app\/\">[15] &nbsp;A. Verhoeven,&nbsp;<em>Native app vs. progressive web app (PWA): Everything you need to know<\/em><\/a><br><a href=\"https:\/\/developers.google.com\/web\/tools\/lighthouse\/\" title=\"https:\/\/developers.google.com\/web\/tools\/lighthouse\/\">[16] &nbsp;Google,&nbsp;<em>Lighthouse<\/em><\/a><br><a href=\"https:\/\/web.dev\/performance-scoring\/\" title=\"https:\/\/web.dev\/performance-scoring\/\">[17] &nbsp;Google Developers,&nbsp;<em>Lighthouse performance scoring<\/em><\/a><br><a href=\"https:\/\/web.dev\/lighthouse-pwa\/\" title=\"https:\/\/web.dev\/lighthouse-pwa\/\">[18] &nbsp;Google Developers,&nbsp;<em>PWA audits<\/em><\/a><br><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Progressive Web Apps sollen es erm\u00f6glichen die Vorteile des Webs und die nativer Apps zu nutzen, um so f\u00fcr jeden, \u00fcberall und auf jedem Ger\u00e4t, nutzbar zu sein. Was Progressive Web Apps eigentlich sind, welche Vor- und Nachteile sie mit sich bringen und ob sie in Zukunft native Apps komplett ersetzen k\u00f6nnen, soll in diesem [&hellip;]<\/p>\n","protected":false},"author":1015,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[649,653,662],"tags":[426,411,287,289,425],"ppma_author":[840],"class_list":["post-12512","post","type-post","status-publish","format-standard","hentry","category-interactive-media","category-mobile-apps","category-web-performance","tag-lighthouse","tag-performance","tag-pwa","tag-web-app","tag-web-development"],"aioseo_notices":[],"jetpack_featured_media_url":"","jetpack-related-posts":[{"id":8217,"url":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2019\/08\/29\/progressive-web-apps-wer-braucht-noch-eine-native-app\/","url_meta":{"origin":12512,"position":0},"title":"Progressive Web Apps \u2013 Wer braucht noch eine native App?","author":"Dominik Zinser","date":"29. August 2019","format":false,"excerpt":"Beispiele zum Einstieg Progressive Web Apps sind schon weiter verbreitet wie man denkt. Auch gro\u00dfe, innovative Unternehmen Twitter, Airbnb, Spotify oder Tinder setzen auf Progressive Web Apps. Abb. 1: Eine Auswahl von Progressive Web Apps [1] Wer sich ein tolles Beispiel anschauen m\u00f6chte, dem empfehle ich https:\/\/riorun.theguardian.com\/ (auf mobile) zu\u2026","rel":"","context":"In &quot;Allgemein&quot;","block_context":{"text":"Allgemein","link":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/category\/allgemein\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2019\/08\/1-150x150.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2019\/08\/1-150x150.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2019\/08\/1-150x150.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2019\/08\/1-150x150.png?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":12376,"url":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2021\/02\/24\/serviceworker-offline-first\/","url_meta":{"origin":12512,"position":1},"title":"ServiceWorker \u2013 Offline First","author":"Benedikt Reuter","date":"24. February 2021","format":false,"excerpt":"In der Vorlesung Rich Media haben wir uns viel mit Performance in Web Anwendungen besch\u00e4ftigt. Dabei habe ich mich mit ServiceWorkern in Bezug auf Offlinenutzung, Funktionalit\u00e4t und Performance besch\u00e4ftigt. Zuerst habe ich mich damit befasst, wie ein ServiceWorker funktioniert. Danach habe ich geschaut, wie sich die Nutzung eines ServiceWorker und\u2026","rel":"","context":"In &quot;Interactive Media&quot;","block_context":{"text":"Interactive Media","link":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/category\/interactive-media\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/02\/Picture-9.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/02\/Picture-9.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/02\/Picture-9.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/02\/Picture-9.png?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":23713,"url":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2022\/11\/17\/vom-uni-projekt-in-den-app-store\/","url_meta":{"origin":12512,"position":2},"title":"Vom Uni-Projekt in den App Store","author":"Fabian Hiller","date":"17. November 2022","format":false,"excerpt":"An der HdM arbeiten jedes Semester unz\u00e4hlige Studierende an verschiedenen Ideen. Von Apps \u00fcber Videoproduktionen bis hin zu Verpackungstechnik ist dabei alles zu finden. Kaum eine Idee besteht jedoch \u00fcber das Semester hinaus. Mit der Abgabe zur Benotung enden leider bereits die meisten Projekte. Dieser Beitrag soll Inspiration bieten, falls\u2026","rel":"","context":"In &quot;Allgemein&quot;","block_context":{"text":"Allgemein","link":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/category\/allgemein\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2022\/11\/unisex-app-screenshots.jpg?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2022\/11\/unisex-app-screenshots.jpg?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2022\/11\/unisex-app-screenshots.jpg?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2022\/11\/unisex-app-screenshots.jpg?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2022\/11\/unisex-app-screenshots.jpg?resize=1050%2C600&ssl=1 3x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2022\/11\/unisex-app-screenshots.jpg?resize=1400%2C800&ssl=1 4x"},"classes":[]},{"id":26064,"url":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2024\/02\/03\/das-neue-javascript-framework-qwik-js-mit-resumability-zur-optimalen-performance-im-web\/","url_meta":{"origin":12512,"position":3},"title":"Das neue JavaScript Framework Qwik.js &#8211; Mit Resumability zur optimalen Performance im Web?","author":"Tim Peters","date":"3. February 2024","format":false,"excerpt":"Aufgrund des mittlerweile riesigen Angebots und der Menge an Mitbewerbern in nahezu jeder Branche im Web sind die Konsumenten der Inhalte anspruchsvoller als je zuvor und der Page Speed ist ein entscheidender Erfolgsfaktor f\u00fcr jedes Online-Unternehmen. Webseiten, die schnell laden und ohne Verz\u00f6gerung auf Nutzerinput reagieren, halten die User nicht\u2026","rel":"","context":"In &quot;Interactive Media&quot;","block_context":{"text":"Interactive Media","link":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/category\/interactive-media\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/vm6o42zSi0mK7OntVhP16W6OzSt7pjZZCVNu7KsyoI5nngqyiFVAO6FaCRb6nCvnr61gi8Fw-un2XKSeEMNoShtb-gKJMInIJbMFb3yRUnB51fadHVk9S_8Vx9Dn2qmQ7OIW4i7A0-nBtZ6JOw-XWZE.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/vm6o42zSi0mK7OntVhP16W6OzSt7pjZZCVNu7KsyoI5nngqyiFVAO6FaCRb6nCvnr61gi8Fw-un2XKSeEMNoShtb-gKJMInIJbMFb3yRUnB51fadHVk9S_8Vx9Dn2qmQ7OIW4i7A0-nBtZ6JOw-XWZE.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/vm6o42zSi0mK7OntVhP16W6OzSt7pjZZCVNu7KsyoI5nngqyiFVAO6FaCRb6nCvnr61gi8Fw-un2XKSeEMNoShtb-gKJMInIJbMFb3yRUnB51fadHVk9S_8Vx9Dn2qmQ7OIW4i7A0-nBtZ6JOw-XWZE.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/vm6o42zSi0mK7OntVhP16W6OzSt7pjZZCVNu7KsyoI5nngqyiFVAO6FaCRb6nCvnr61gi8Fw-un2XKSeEMNoShtb-gKJMInIJbMFb3yRUnB51fadHVk9S_8Vx9Dn2qmQ7OIW4i7A0-nBtZ6JOw-XWZE.png?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":23769,"url":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2023\/02\/05\/svgs-und-die-web-performance-best-practices\/","url_meta":{"origin":12512,"position":4},"title":"SVGs und die Web-Performance: Best Practices","author":"Luca Wehner","date":"5. February 2023","format":false,"excerpt":"Ob UI-Designer, Frontend-Entwickler oder Backend-Spezialist, in allen Bereichen der modernen Web-Entwicklung kommt man in irgendeiner Art und Weise mit Logos und Icons in Ber\u00fchrung. Um eine gute User-Experience zu gew\u00e4hrleisten, sollten diese f\u00fcr den Betrachter stets gestochen scharf angezeigt werden, egal ob kleines Handy oder gro\u00dfer Laptop-Bildschirm. Moderne Websites m\u00fcssen\u2026","rel":"","context":"In &quot;Interactive Media&quot;","block_context":{"text":"Interactive Media","link":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/category\/interactive-media\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/02\/image-7.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/02\/image-7.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/02\/image-7.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/02\/image-7.png?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":21872,"url":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2022\/01\/17\/drei-sekunden-sind-zu-lang-auswirkung-der-ladezeit-von-webseiten-auf-die-user-experience\/","url_meta":{"origin":12512,"position":5},"title":"Drei Sekunden sind zu lang &#8211; Auswirkung der Ladezeit von Webseiten auf die User Experience","author":"Sarah Schwab","date":"17. January 2022","format":false,"excerpt":"Warum ist es so wichtig, die optimale Ladezeit anzustreben? Auf jemanden oder auf etwas zu waren ist uns Menschen nicht fremd. Im Schnitt verbringt jeder Mensch in seinem Leben rund ein bis zwei Jahre mit Warten. Dies kann an der Bushaltestelle, Suppermarktkasse, dem Abwarten auf die Ankunft einer Zustellung, oder\u2026","rel":"","context":"In &quot;Allgemein&quot;","block_context":{"text":"Allgemein","link":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/category\/allgemein\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/08\/mFjlE1bSwg2Fk8eaWW2eQy-2Qk9CiihxoD5ul4gle6YmjmIPyOjPk2vHwDOtdVDgF13QTDdhmdZgkUAG8oqqOo1u8IAxSjrzVTtMYxVqYUiQ_3-W0lwTrSUt3_cL8jlcK_Cn0hDA.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/08\/mFjlE1bSwg2Fk8eaWW2eQy-2Qk9CiihxoD5ul4gle6YmjmIPyOjPk2vHwDOtdVDgF13QTDdhmdZgkUAG8oqqOo1u8IAxSjrzVTtMYxVqYUiQ_3-W0lwTrSUt3_cL8jlcK_Cn0hDA.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/08\/mFjlE1bSwg2Fk8eaWW2eQy-2Qk9CiihxoD5ul4gle6YmjmIPyOjPk2vHwDOtdVDgF13QTDdhmdZgkUAG8oqqOo1u8IAxSjrzVTtMYxVqYUiQ_3-W0lwTrSUt3_cL8jlcK_Cn0hDA.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/08\/mFjlE1bSwg2Fk8eaWW2eQy-2Qk9CiihxoD5ul4gle6YmjmIPyOjPk2vHwDOtdVDgF13QTDdhmdZgkUAG8oqqOo1u8IAxSjrzVTtMYxVqYUiQ_3-W0lwTrSUt3_cL8jlcK_Cn0hDA.png?resize=700%2C400&ssl=1 2x"},"classes":[]}],"jetpack_sharing_enabled":true,"authors":[{"term_id":840,"user_id":1015,"is_guest":0,"slug":"fd047","display_name":"Fabiola Dums","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/895f69e73f6953d7f7b20b19941ac8fefbc45177ae54991f78c1e91ef4c7bc92?s=96&d=mm&r=g","0":null,"1":"","2":"","3":"","4":"","5":"","6":"","7":"","8":""}],"_links":{"self":[{"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/posts\/12512","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/users\/1015"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/comments?post=12512"}],"version-history":[{"count":45,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/posts\/12512\/revisions"}],"predecessor-version":[{"id":12604,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/posts\/12512\/revisions\/12604"}],"wp:attachment":[{"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/media?parent=12512"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/categories?post=12512"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/tags?post=12512"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/ppma_author?post=12512"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}