Wie Jamstack prägt Netlify diesen Begriff.
Wenn Ihre Reaktion lautet: großartig, etwas Neues, das ich kennen und lernen muss, dann wissen Sie, dass Distributed Persistent Rendering (DPR) zwar einige neue Dinge mit sich bringt, es sich aber tatsächlich um einen Schritt in Richtung Vereinfachung handelt und Ideen nutzt, die so alt sind wie das Web selbst, genau wie Jamstack.
Es ist wahrscheinlich hilfreich, es direkt von Matt Biilmann, CEO von Netlify, zu hören
In diesem kurzen Video argumentiert er, dass React sehr einfach begann und viele klare Probleme mit der JavaScript-Architektur löste, und dass es im Laufe der Zeit, wenn es versucht, mehr Anwendungsfälle zu lösen, viel komplizierter wird und die Attraktivität verliert, die seine Einfachheit einst hatte.
Auch Jamstack steht vor diesem Problem. Die ursprüngliche Einfachheit war äußerst ansprechend, aber da es wächst, um mehr Anwendungsfälle zu berücksichtigen, werden die Dinge kompliziert.
Eine dieser Komplikationen sind Websites mit vielen Tausenden von Seiten. Solche Websites können sehr lange Build-Zeiten haben. Es ist schön zu sehen, wie Frameworks dem entgegenwirken (Google "Inkrementelle Builds {Ihr bevorzugtes Framework}"), aber verdammt, wenn Sie einen Link in einer Website-Fußzeile ändern, bauen Sie die gesamte Website aufgrund dieser einen Änderung neu auf.
Anstatt also während eines Builds viele Tausende von Seiten zu bauen, sagen wir einfach, Sie hätten es… nicht getan. Zumindest bis diese Seite einmal angefordert wird. Das ist
Hier macht Zach Leatherman das. Er findet eine Stelle auf seiner Website, die bei jedem Build etwa 400 Seiten generiert, und weist Eleventy an, diese Seite während des normalen Build-Prozesses nicht zu erstellen, sondern in die Cloud zu verlagern (buchstäblich wird eine Lambda-Funktion ausgeführt und die Seite bei Bedarf gebaut).
Das Auslagern dieser 400 Seiten spart sieben Sekunden beim Build. Nehmen wir an, Ihre Website ist dramatischer, mit 16.000 Seiten. Eine grobe Schätzung besagt, dass Sie dort vier Minuten sparen. Es geht nicht nur um Zeit, obwohl das ein wichtiger Punkt ist. Ich denke an all die Elektrizität und Langzeitspeicherung, die Sie durch diese Bauweise sparen.
Hier ist der Netlify-Blogbeitrag
So wie die Prägung des Begriffs "Jamstack" nicht bedeutete, eine völlig neue Architektur von Grund auf neu zu erfinden, bedeutet die Benennung dieses Konzepts "Distributed Persistent Rendering" nicht, dass wir eine brandneue Lösung entwickeln.
Der Begriff "DPR" ist für uns neu, aber in vielerlei Hinsicht lassen wir uns von Lösungen inspirieren, die in der Vergangenheit funktioniert haben. Wir überarbeiten sie einfach, um sie an die modernen Jamstack-Best Practices anzupassen.
Ich mag es, dass es nicht etwas völlig Neues ist. Ich bin sicher, Netlfy's Implementierung davon ist kein Witz, aber für uns ist es sehr einfach, darüber nachzudenken
- Einige Seiten werden wie gewohnt vorkompiliert
- Einige Seiten werden nicht kompiliert (verzögert)
- Wenn die nicht kompilierten Seiten zum ersten Mal angefordert werden, werden sie dann kompiliert und zwischengespeichert, sodass sie nicht erneut kompiliert werden müssen.
Das war's im Grunde.
Es erinnert mich daran, wie alte WordPress-Caching-Plugins funktionierten. Wenn eine Seite zum ersten Mal angefordert wurde, wurden die PHP- und MySQL-Abfragen und alles andere ausgeführt, dann wurde das Ergebnis als .html-Datei auf der Festplatte gespeichert, um nachfolgende Anfragen zu bedienen. Nichts Neues, aber immer noch effizient.
Der Trick für eine DPR-Architektur auf Netlify ist die Verwendung ihrer (Beta) On-Demand Builders, also hier ist der Blogbeitrag, der alles erklärt und Sie zu den Dokumenten etc. führt.
Klingt, als ob sie sich in Richtung altes WordPress bewegen, nur ohne traditionelle Datenbank
Wenn diese Technologie in der Vergangenheit existierte, warum ändert dann jemand nur den Namen und erfindet ihn? Vielleicht verstehe ich das nicht richtig, aber wenn alte WordPress-Caching-Plugins dasselbe taten, warum ist das jetzt eine Neuigkeit?
Nur weil es konzeptionell ähnlich ist, bedeutet das nicht, dass es buchstäblich genau dasselbe ist und keinen Namen verdient.
Ich schätze, der Kompromiss ist eine langsamere Erfahrung für den ersten Besucher einer nicht erstellten Seite. Wie viel langsamer wäre interessant.
Interessante Fähigkeit für den Entwickler, auszuwählen, welche Seiten nicht erstellt werden sollen. Basierend auf Analysen, unserem bevorzugten 'Weg' durch die Seite oder einfach nur einer besten Schätzung.
Wir könnten Seiten automatisch pingen, um Builds auszulösen, nur seltener als typische Build-Zyklen. Das verliert jedoch den Energie- und Speicherungsbonus und führt mehr Komplexität ein.
Viel zu bedenken, aber meiner Meinung nach ein weiterer Schritt nach vorne für Jamstack.
Stimmt! Ich vermute, es ist wahrscheinlich ziemlich schnell. Ein statischer Site-Generator, der EINE Seite ausführt, kann nicht allzu schlecht sein. Aber man zahlt auch für die Startkosten der Lambda und der Software, also lohnt es sich, Details zu haben. Für mich fühlt es sich ähnlich an (konzeptionell) wie der Preis, den wir für jedes Web-Asset beim ersten Mal bezahlen, wenn es nicht zwischengespeichert ist.
Das Lustige an statischen Site-Generatoren ist, dass das früher die Norm war, ich glaube Ende der 90er Jahre, weil die Server damals wirklich langsam waren und Webtechnologien (serverseitig) schwer zu verwenden waren. Dann kam Cafelog/Wordpress und alle waren begeistert, nicht Dutzende oder Hunderte von Seiten jedes Mal neu generieren zu müssen, wenn man einen Footer-Link änderte. Die Datenbank war für die eigentlichen Daten zuständig. Bei den heutigen schnellen und leistungsstarken Servern erstaunt es mich, wie manche Leute Websites auf die alte Art erstellen und sogar neue Begriffe wie das Hauptthema dieses Artikels prägen, wenn man ein CMS und ein Caching-System nutzen kann, das das Beste aus beiden Welten bietet.
Wie unterscheidet sich das von NextJS "getStaticPaths" mit dem revalidate-Flag?
Ich kann mich leicht irren... aber ist das nicht das "Stale While Revalidate"-Muster? Wenn ja, denke ich, der Unterschied ist, dass dieses Muster zuerst veraltete Inhalte liefert und dann nach einer Netzwerkanfrage mit neuen Inhalten aktualisiert, während das DPR-Muster beim ersten Aufruf frische Inhalte liefert (mit der Verzögerung, die es dauert, diese frischen Inhalte beim allerersten Aufruf zu generieren).
Sieht so aus, als ob sich das wieder zur traditionellen Web-Architektur mit vollständigem Seiten-Caching entwickelt hat
unterscheidet sich das von ISR, das von Next.js angeboten wird?
Via Cassidys Erklärer
Was ist mit SEO, besonders da *die* Suchmaschine darauf drängt, ihre "Core Web Vitals" bald mit LCP einzubeziehen.
Wenn das wahr ist
Ich nehme an, es wäre kein großes Problem ;)