Sie werden oft hören, wie Entwickler über „statische“ und „dynamische“ Websites sprechen, oder Sie haben vielleicht jemanden den Begriff Jamstack verwenden hören. Was bedeuten diese Begriffe und wann wird eine „statische“ Website zu einer Jamstack- oder dynamischen Website? Diese Fragen klingen einfach, sind aber vielschichtiger, als sie scheinen. Lassen Sie uns diese Begriffe untersuchen, um ein tieferes Verständnis von Jamstack zu gewinnen.
Die Grenze finden
Was ist der Unterschied zwischen einem Stuhl und einem Hocker? Die meisten Leute werden antworten, dass ein Stuhl vier Beine und eine Rückenlehne hat, während ein Hocker drei Beine ohne Rückenlehne hat.


OK, das ist ein guter Ausgangspunkt, aber was ist mit diesen hier?


Je mehr ein Stuhl einem Hocker ähnelt, desto weniger Leute werden eindeutig zustimmen, dass es sich um einen Stuhl handelt. Irgendwann erreichen wir einen Punkt, an dem die meisten Leute zustimmen, dass es sich um einen Hocker und nicht um einen Stuhl handelt. Das mag wie eine alberne Übung klingen, aber wenn wir Stühle wirklich schätzen wollen, ist sie wertvoll. Wir finden heraus, wo die Grenzen eines Stuhls für die meisten Leute liegen. Wir bauen auch ein Verständnis für den Graubereich darüber hinaus auf. Schließlich gelangen wir zu dem Punkt, an dem selbst die größten Hardcore-Stuhl-Fans zugeben, dass ein Hocker vor ihnen steht.
So interessant Stühle auch sind, dies ist ein Artikel über Webseiten-Auslieferungstechnologien. Führen wir dieselbe Übung für statische, dynamische und Jamstack-Websites durch.
Auf hoher Ebene
Wenn Sie eine Website in Ihrem Browser aufrufen, passiert im Hintergrund vieles
- Ihr Browser führt eine DNS-Auflösung durch, um den Domainnamen in eine IP-Adresse umzuwandeln.
- Er fordert eine HTML-Datei von dieser IP-Adresse an.
- Der Webserver sendet die angeforderte Datei zurück.
- Während der Browser die Webseite rendert, kann er auf einen Verweis auf eine Ressource stoßen, z. B. eine CSS-, JavaScript- oder Bilddatei. Der Browser führt dann eine Anfrage für diese Ressource durch.
- Dieser Zyklus setzt sich fort, bis der Browser alle Dateien für die Webseite hat. Es ist nicht ungewöhnlich, dass eine einzelne Webseite über 50 Anfragen stellt.
Bei jeder Anfrage ist die Antwort des Webservers immer eine statische Datei, selbst bei einer dynamischen Website. Sie könnten diese Dateien auf einen USB-Stick speichern, per E-Mail an einen Freund senden, genau wie jede andere Datei auf Ihrem Computer.
Beim Vergleich von statisch und dynamisch sprechen wir darüber, was der Webserver tut. Auf einer statischen Website existieren die vom Browser angeforderten Dateien bereits auf dem Webserver. Der Webserver sendet sie exakt so zurück, wie sie sind. Auf einer dynamischen Website wird die Antwort von Software generiert. Diese Software könnte sich mit einer Datenbank verbinden, um Daten abzurufen, ein Layout aus Vorlagendateien zu erstellen und das heutige Datum in die Fußzeile einzufügen. Sie tut all dies für jede Anfrage.
Das ist der grundlegende Unterschied zwischen statischen und dynamischen Websites.
Wo passt Jamstack hinein?
Statische Websites sind restriktiv. Sie eignen sich hervorragend für Informationswebsites. Per Definition können Sie jedoch keinen dynamischen Inhalt oder kein dynamisches Verhalten haben. Jamstack verwischt die Grenze zwischen statisch und dynamisch. Die Idee ist, all die Dinge zu nutzen, die statische Websites großartig machen, und gleichzeitig dynamische Funktionalität dort zu ermöglichen, wo sie benötigt wird.
Das „Stack“ in Jamstack ist irreführend. Die Wahrheit ist, dass Jamstack überhaupt kein Stack ist. Es ist eine Philosophie, die eine bemerkenswerte Ähnlichkeit mit den 5 Säulen des AWS Well-Architected Frameworks aufweist. Die Mehrdeutigkeit des Begriffs hat zu umfangreichen Diskussionen in der Community darüber geführt, was es bedeutet, Jamstack zu sein.
Was ist Jamstack?
Jamstack ist eine Obermenge von statisch. Aber um Jamstack wirklich zu verstehen, beginnen wir mit den Samen, die zur Prägung des Begriffs geführt haben.
Im Jahr 2002 veröffentlichte der verstorbene Aaron Swartz einen Blogbeitrag mit dem Titel „Bake, Don’t Fry.“ Obwohl Aaron „Bake, Don’t Fry“ nicht geprägt hat, ist dies das erste Mal, dass ich jemanden erkenne, der die Vorteile statischer Websites anerkennt und gleichzeitig die wahrgenommenen Einschränkungen des Wortes bricht.
Ich kümmere mich nicht darum, umständliche AOLserver-, Postgres- und Oracle-Installationen warten zu müssen. Ich kümmere mich darum, meine Backups mit scp durchführen zu können. Ich kümmere mich darum, keine Installation oder Konfiguration durchführen zu müssen, um meine Website auf einen neuen Server zu verschieben. Ich kümmere mich darum, plattform- und serverunabhängig zu sein.
Wenn wir durch die Geschichte stöbern, können wir ähnliche Frustrationen finden, die zu den Jamstack-Samen geführt haben
- Ben und Mena Trott schufen MovableType aufgrund
Unzufriedenheit mit bestehenden Blog-CMS – Leistung, Stabilität.
- Tom Preston-Werner schuf Jekyll, um sich von Komplexität zu lösen
Ich wusste bereits viel über das, was ich nicht wollte. Ich hatte die Nase voll von komplizierten Blogging-Engines wie WordPress und Mephisto. Ich wollte großartige Beiträge schreiben, nicht tausende von Seitenvorlagen gestalten, den ganzen Tag Kommentare moderieren und ständig hinter der neuesten Softwareversion hinterherhinken.
- Steve Francia schuf Hugo für die Leistung
In den letzten Jahren wurde dieser Blog von WordPress und davor von Drupal betrieben. Beide sind gute Software, aber im Laufe der Zeit wurde ich immer enttäuschter darüber, wie beide für das Schreiben von Inhalten optimiert sind, obwohl die mit Abstand häufigste Nutzung das Lesen von Inhalten ist. Aufgrund der Notwendigkeit, den PHP-Interpreter bei jeder Anfrage zu laden, konnte er nie als schnell bezeichnet werden und verbrauchte viel Speicher auf meinem VPS.
Die gleichen Themen tauchen auf, wenn Sie sich die Ursprünge vieler früher Jamstack-Tools ansehen
- Komplexität reduzieren
- Leistung verbessern
- Anbieterabhängigkeit reduzieren
- Bessere Arbeitsabläufe für Entwickler
In den letzten 20 Jahren hat sich JavaScript von einer Sprache zur Ergänzung kleiner Interaktionen auf einer Website zu einer Plattform für den Aufbau umfangreicher Webanwendungen im Browser entwickelt. Parallel dazu haben wir eine Bewegung gesehen, große Anwendungen in kleinere Microservices aufzuteilen. Diese beiden Entwicklungen führten zu einer neuen Art des Website-Aufbaus, bei der Sie ein statisches Frontend haben konnten, das von einem dynamischen Backend entkoppelt war.
Im Jahr 2015 wollte Mathias Biilmann über diese moderne Art des Website-Aufbaus sprechen, kämpfte aber mit der einschränkenden Definition von statisch
Wir waren in diesem Bereich der modernen statischen Websites. Das ist eine wirklich schlechte Beschreibung dessen, was wir tun, oder? Und wir hatten immer wieder dieses Problem, dass, wenn wir mit Leuten über statische Websites sprachen, sie an etwas sehr Statisches dachten. Sie dachten an eine Broschüre oder etwas ohne bewegliche Teile. Eine kleine Einzelseite oder so etwas.
Um diese Einschränkungen zu überwinden, prägte er den Begriff „Jamstack“, um diesen neuen Ansatz zu beschreiben, und er verbreitete sich wie ein Lauffeuer. Was alte statische Technologie aus den 90er Jahren war, wurde wieder neu und bis an neue Grenzen gebracht. Viele Entwickler erkannten die Vorteile des Jamstack-Ansatzes, was dazu beitrug, dass Jamstack zu dem blühenden Ökosystem heranwuchs, das es heute ist.
Aaron Swartz drückte es schön aus, 13 Jahre bevor Jamstack geprägt wurde: eine strikte Trennung zwischen Eingabe (die dynamischen Code zur Verarbeitung benötigt) und Ausgabe (die normalerweise gebacken werden kann) beibehalten.
Mit anderen Worten, trennen Sie das Frontend vom Backend. Rendern Sie Inhalte vor, wann immer möglich. Schichten Sie dynamische Funktionalität hinzu, wo nötig. Das ist der Kern von Jamstack.
Der Grund, warum Sie eine Jamstack-Website gegenüber einer dynamischen Website erstellen möchten, liegt in den sechs Säulen von Jamstack
Sicherheit
Jamstack-Websites haben weniger bewegliche Teile und eine geringere Angriffsfläche für bösartige Ausnutzung durch externe Quellen.
Skalierbarkeit
Jamstack-Websites sind, wo immer möglich, statisch. Statische Websites können vollständig auf einem CDN leben, was ihre Skalierung erheblich einfacher und kostengünstiger macht.
Performance
Das Ausliefern einer Webseite von einem CDN anstelle der bedarfsweisen Generierung von einem zentralen Server verbessert die Ladezeit der Seite.
Wartbarkeit
Statische Websites sind einfach. Sie benötigen einen Webserver, der Dateien ausliefern kann. Mit einer dynamischen Website benötigen Sie möglicherweise ein ganzes Team, um eine Website online und schnell zu halten.
Portabilität
Auch hier besteht eine statische Website aus Dateien. Solange Sie einen Webserver finden, der Website-Dateien ausliefern kann, können Sie Ihre Website überallhin verschieben.
Entwicklererfahrung
Git-Workflows sind heute ein Kernbestandteil der Softwareentwicklung. Bei vielen Legacy-CMS ist es schwierig, Git-Entwicklungs-Workflows zu haben. Bei einer Jamstack-Website ist alles eine Datei, was die nahtlose Verwendung von Git ermöglicht.
Chris geht in einem Deep-Dive-Vergleich zwischen Jamstack und WordPress auf einige dieser Punkte ein. Er vergleicht auch die Gründe für die Wahl einer Jamstack-Architektur im Vergleich zu einer serverseitigen in „Static or Not?“.
Nutzen wir diese Säulen, um Jamstack-Anwendungsfälle zu bewerten.
Wo ist die Grenze zwischen statisch und Jamstack?
Nachdem wir nun die Grundlagen von statisch und Jamstack kennen, tauchen wir ein und sehen, was an den Rändern jeder Definition liegt. Wir haben vier Kategorien, unter die jede Randfallgruppe fallen kann.
- Statisch – Dies hält sich strikt an die Definition von statisch.
- Im Grunde statisch – Obwohl nicht exakt statisch, würden die meisten Leute es als statische Website bezeichnen.
- Jamstack – Ein statisches Frontend, das von einem dynamischen Backend entkoppelt ist.
- Dynamisch – Rendert Webseiten bei Bedarf.
Viele dieser Anwendungsfälle können mehreren Kategorien zugeordnet werden. In dieser Übung ordnen wir sie der restriktivsten Kategorie zu, zu der sie passen.
JavaScript-Interaktion Statisch
Beginnen wir mit einer einfachen Sache. Ich habe eine statische Website, die JavaScript verwendet, um eine Diaschau von Bildern zu erstellen.
Die HTML-Seite, das JavaScript und die Bilder sind allesamt statische Dateien. Die gesamte HTML-Manipulation, die für die Funktion der Diaschau erforderlich ist, erfolgt im Browser ohne äußeren Einfluss.
Cookies Statisch
Ich habe eine statische Website, die ein Banner am oberen Rand der Seite mithilfe von JavaScript hinzufügt, wenn ein Cookie vorhanden ist. Ein Cookie ist nur ein Header. Der Rest der Dateien ist statisch.
Externe Ressourcen Im Grunde statisch
Auf einer Webseite können wir Bilder oder JavaScript aus einer externen Quelle laden. Diese externe Quelle kann diese Ressourcen dynamisch nach Bedarf generieren. Würde das bedeuten, dass wir eine dynamische Website haben?
Die meisten Leute, mich eingeschlossen, würden dies als statische Website betrachten, weil sie es im Grunde ist. Aber wenn wir streng nach der Definition gehen, passt sie nicht. Jede dynamisch generierte Komponente der Seite verdirbt die heilige Harmonie des Statischen.
iFrames Im Grunde statisch
Ein Inline-Frame ermöglicht es Ihnen, eine HTML-Seite in eine andere HTML-Seite einzubetten. iFrames werden häufig zum Einbetten von Google Maps, Facebook Like-Buttons und YouTube-Videos auf einer Webseite verwendet.
Auch hier würden die meisten Leute dies immer noch als statische Website betrachten. Diese Einbettungen stammen jedoch fast immer aus einer dynamisch generierten Quelle.
Formulare Im Grunde statisch
Eine statische Website kann zweifellos ein Formular enthalten. Das Dilemma entsteht beim Absenden. Wenn Sie etwas mit den Daten tun möchten, benötigen Sie fast sicher ein dynamisches Backend. Es gibt viele Formularübermittlungsdienste, die Sie als Aktion für Ihr Formular verwenden können.
Ich sehe zwei Argumentationswege
- Sie übermitteln ein Formular an eine externe Website und diese leitet Sie danach zurück. Diese Trennung bedeutet, dass die Definition von statisch intakt bleibt.
- Dieser externe Dienst ist ein Kernbestandteil Ihrer Website, die Definition von statisch funktioniert nicht mehr.
In Wirklichkeit würden die meisten Leute dies immer noch als statische Website betrachten.
Ajax-Anfragen Jamstack
Eine Ajax-Anfrage ermöglicht es einem Entwickler, Daten aus einer externen Quelle anzufordern, ohne die Seite neu laden zu müssen. Wir befinden uns im selben Boot wie in den obigen Situationen, indem wir uns auf einen Drittanbieter verlassen. Es ist möglich, dass der Endpunkt des Ajax-Aufrufs eine statische JSON-Datei ist, aber wahrscheinlicher ist, dass sie dynamisch generiert wird.
Die Art und Weise, wie Ajax-Daten typischerweise auf einer Website verwendet werden, drängt sie über eine statische Website hinaus in den Jamstack-Bereich. Es passt gut zu Jamstack, da Sie eine Website haben können, auf der Sie alles vorab rendern, und dann Ajax verwenden, um dynamische Funktionalität oder Inhalte auf der Website zu überlagern.
Eingebetteter E-Commerce Jamstack
Es gibt Dienste, die es Ihnen ermöglichen, E-Commerce hinzuzufügen, selbst zu statischen Websites. Hinter den Kulissen machen sie im Wesentlichen Ajax-Aufrufe, um Artikel in einem Warenkorb zu verwalten und Zahlungsdetails zu sammeln.
Single Page Application (SPA) Jamstack
Allein der Titel schließt es aus der Kategorie der statischen Websites aus. Eine SPA verwendet Ajax-Aufrufe, um Daten anzufordern. Die Präsentationsschicht befindet sich vollständig im Frontend, was sie Jamtastisch macht.
Ajax-Aufruf an eine serverlose Funktion Jamstack
Ob der Endpunkt eines Ajax-Aufrufs serverlos mit etwas wie AWS Lambda ist, zu Ihrem Kubernetes-Cluster-basierten Node.js-Backend geht oder ein einfaches PHP-Backend ist, spielt keine Rolle. Der Schlüssel für Jamstack ist, dass das Frontend vom Backend unabhängig ist.
Reverse-Proxy vor einem Webserver Statisch
Ein Reverse-Proxy vor dem Webserver für eine statische Website macht sie dynamisch, oder? Nun, nicht so schnell. Obwohl ein Proxy eine Software ist, die dem Netzwerk ein dynamisches Element hinzufügt, solange die Datei auf dem Server genau die Datei ist, die der Browser erhält, ist sie immer noch statisch.
Ein Webserver, ein Modem und jede Netzwerk-Infrastruktur dazwischen laufen mit Software. Wenn das Hinzufügen eines Proxys eine statische Website dynamisch macht, dann ist nichts statisch.
CDN Statisch
Ein CDN ist ein global verteilter Reverse-Proxy, fällt also in dieselbe Kategorie wie ein Reverse-Proxy. CDNs fügen oft eigene Header hinzu. Dies beeinträchtigt den prestigeträchtigen statischen Status nicht, da die Header nicht Teil der Datei sind, die auf der Festplatte des Servers liegt.
CDN vor einer dynamischen Website mit einer Cache-Ablaufzeit von 200 Jahren Dynamisch
OK, 200 Jahre ist eine lange Ablaufzeit, das gebe ich zu. Es gibt zwei Gründe, warum dies weder eine statische noch eine Jamstack-Website ist
- Die erste Anfrage wird nicht gecacht, daher wird sie bei Bedarf generiert.
- CDNs sind nicht für dauerhafte Speicherung ausgelegt. Wenn Ihre Website nach einer Woche nur fünf Aufrufe hatte, kann das CDN Ihre Webseite aus dem Cache löschen. Es kann die Webseite immer vom Ursprungsserver abrufen, der die Antwort dynamisch rendert.
WordPress mit statischer Ausgabe Statisch
Die Verwendung eines WordPress-Plugins wie WP2Static ermöglicht es Ihnen, Ihre Website in WordPress zu erstellen und zu verwalten und bei jeder Änderung eine statische Website auszugeben.
Wenn Sie dies tun, existieren die vom Browser angeforderten Dateien bereits auf dem Webserver, was sie zu einer statischen Website macht – ein subtiler, aber wichtiger Unterschied zur Verwendung eines CDN vor einer dynamischen Website.
Edge Computing Dynamisch
Viele Unternehmen bieten mittlerweile die Möglichkeit, dynamischen Code am Rand eines CDN auszuführen. Das ist ein mächtiges Konzept, denn Sie können dynamische Funktionalität haben, ohne Latenz für den Benutzer hinzuzufügen. Sie können sogar Edge-Computing nutzen, um HTML zu manipulieren, bevor es an den Client gesendet wird.
Es kommt darauf an, wie Sie die Edge-Funktionen verwenden. Sie könnten eine Edge-Funktion verwenden, um Kopfzeilen zu bestimmten Anfragen hinzuzufügen. Ich würde argumentieren, dass dies immer noch eine statische Website ist. Wenn Sie viel mehr als das tun, wo Sie HTML manipulieren, haben Sie die dynamische Grenze überschritten.
Es ist schwer zu argumentieren, dass es sich um eine Jamstack-Website handelt, da sie einige der grundlegenden Vorteile nicht erfüllt: Skalierbarkeit, Wartbarkeit und Portabilität. Nun haben Sie ein Stück Ihrer Kerninfrastruktur, das HTML bei jeder Anfrage ändert, und es funktioniert nur auf dieser speziellen Hosting-Infrastruktur. Das entfernt sich ziemlich weit von der glückseligen Einfachheit einer statischen Website.
Eines der eleganten Dinge an Jamstack ist, dass Frontend und Backend entkoppelt sind. Das Backend besteht aus APIs, die Daten ausgeben. Sie wissen nicht und kümmern sich nicht darum, wie die Daten verwendet werden. Das Frontend ist die Präsentationsschicht. Sie weiß, woher dynamische Daten kommen und wie sie gerendert werden. Wenn Sie diese Trennung der Zuständigkeiten aufheben, sind Sie in eine dynamische Welt eingetreten.
Distributed Persistent Rendering (DPR) Dynamisch
DPR ist eine Strategie zur Reduzierung langer Build-Zeiten bei großen Static Site Generator (SSG)-Websites. Die Idee ist, dass der SSG einen Teil der beliebtesten Seiten erstellt. Für die restlichen Seiten erstellt der SSG sie nach Bedarf beim ersten Aufruf und speichert sie dauerhaft. Nach der ersten Anfrage verhält sich die Seite genau wie die übrigen erstellten statischen Seiten.
Lange Build-Zeiten schränken die Nutzung von Jamstack für groß angelegte Anwendungsfälle ein. Wenn das gesamte SSG-Tooling auf GoLang basieren würde, bräuchten wir wahrscheinlich kein DPR. Das ist jedoch nicht die Richtung, die die meisten Jamstack-Tools eingeschlagen haben, und die Build-Leistung kann bei großen Websites quälend langsam sein.
DPR ist ein Mittel zum Zweck und eine Notwendigkeit für das Wachstum von Jamstack. Während es Ihnen ermöglicht, Jamstack-Workflows auf riesigen Websites zu nutzen, glaube ich ironischerweise nicht, dass Sie eine Website, die DPR verwendet, als Jamstack-Website bezeichnen können. Das Ausführen von Software nach Bedarf zur Generierung einer Webseite klingt sicherlich dynamisch. Nach der ersten Anfrage ist eine Seite, die mit DPR ausgeliefert wird, eine statische Seite, was DPR „statischer“ macht als ein CDN vor einer dynamischen Website zu schalten. Dennoch ist es immer noch eine dynamische Website, da keine Trennung zwischen Frontend und Backend besteht und sie nicht portabel ist, eine der Säulen einer Jamstack-Website.
Inkrementelle statische Regeneration (ISR) Dynamisch
ISR ist eine ähnliche, aber subtil andere Strategie als DPR zur Reduzierung langer Build-Zeiten bei großen SSG-Websites. Der Unterschied besteht darin, dass Sie einzelne Seiten periodisch neu validieren können, um eine dynamische Website zu imitieren, ohne eine vollständige Website-Erstellung durchzuführen.
Anfragen an eine Seite ohne zwischengespeicherte Version greifen auf eine veraltete Version dieser Seite oder eine generische Lade-Seite zurück.
Wiederum ist es eine aufregende Technologie, die die Möglichkeiten Ihrer Jamstack-Workflows erweitert, aber eine Seite dynamisch nach Bedarf zu generieren, klingt nach etwas, das eine dynamische Website tun würde.
Flat-File-CMS Dynamisch
Ein Flat-File-CMS verwendet Textdateien für Inhalte anstelle einer Datenbank. Während Flat-File-CMSs ein dynamisches Element aus dem Stack entfernen, rendern sie die Antwort immer noch dynamisch.
Die Linien wurden gezogen
Die Untersuchung und Diskussion dieser Grenzfälle gibt uns ein besseres Verständnis der Grenzen all dieser Begriffe. Der Sinn dieser Übung ist nicht, dogmatisch über die Erstellung statischer oder Jamstack-Websites zu sein. Es geht darum, uns eine gemeinsame Sprache zu geben, um über die Kompromisse zu sprechen, die Sie eingehen, wenn Sie die Grenze von einem Konzept zum anderen überschreiten.
Es ist auch absolut nichts falsch an Kompromissen. Nicht alles kann eine rein statische Website sein. In vielen Fällen ergeben die Kompromisse Sinn. Sagen wir zum Beispiel, das Frontend muss das Land des Besuchers kennen. Dafür gibt es zwei Möglichkeiten
- Beim Seitenaufruf eine Ajax-Anfrage ausführen, um das Land von einer API abzurufen. (Jamstack)
- Verwenden Sie eine Edge-Funktion, um beim Antwort den Ländercode dynamisch in das HTML einzufügen. (Dynamisch)
Wenn der Ländercode ein "Nice-to-have" ist und die Webseite ihn nicht sofort benötigt, dann ist der erste Ansatz eine gute Option. Die Seite kann statisch sein und der API-Aufruf kann bei einem Fehler elegant fehlschlagen. Wenn jedoch der Ländercode für die Seite erforderlich ist, könnte es sinnvoller sein, ihn dynamisch mit einer Edge-Funktion hinzuzufügen. Es wird schneller sein, da Sie keinen zweiten Request/Response-Zyklus durchführen müssen.
Der Schlüssel ist, das Problem zu verstehen, das Sie lösen, und über die Kompromisse nachzudenken, die Sie mit verschiedenen Ansätzen eingehen. Möglicherweise haben Sie den Großteil Ihrer Website als Jamstack und einen Teil als dynamisch. Das ist völlig in Ordnung und kann für Ihren Anwendungsfall notwendig sein. Typischerweise gilt: Je näher Sie an statisch herankommen, desto schneller, sicherer und skalierbarer wird Ihre Website sein.
Dies ist erst der Anfang der Diskussion, und ich würde gerne Ihre Meinung hören. Wo würden Sie die Linien ziehen? Was bedeuten statisch und Jamstack für Sie? Sitzen Sie gerade auf einem Stuhl oder Hocker?
Toller Beitrag (auch wenn ich damit nicht einverstanden bin, wo Sie einige der Linien gezogen haben), aber nur eine Anmerkung: Netlifys Vorschlag lautet "Distributed Persistent Rendering" und nicht "Dynamic Persistent Rendering".
Oh nein, Sie haben Recht! Wir werden das korrigieren.
JAMStack ist der Weg. Wenn es nach mir ginge, würde ich WordPress zerstören und die Erstellung von Website-Themes endlich wieder in die Hände von Entwicklern legen, mit etwas wie Strapi oder Directus, und nicht an Endbenutzer, die keine Ahnung haben, wie man eine Website erstellt und wartet.
Ich muss sagen, das ist ziemlich drastisch. Was ist das Web, wenn es nicht offen ist für jeden, der damit arbeiten möchte? Wir alle müssen irgendwo auf unserer Lernreise anfangen. Die Beschränkung der Entwicklung auf Entwickler legt nahe, dass es eine zu erreichende Schwelle oder eine Eintrittsbarriere gibt.
Ich weiß nicht, warum JAMStack der Weg ist. Es kommt wie üblich darauf an. JAM nur zu verwenden, um JAM zu verwenden, ist nicht der richtige Weg.
Was sind die Projektanforderungen, darum geht es.
Vielleicht ist die Schlussfolgerung, JAMStack zu verwenden, vielleicht auch nicht.
Ich kann mit einem Rennrad im Gelände fahren, aber ist das die beste Entscheidung? Nein. Und dasselbe gilt für Stack-Entscheidungen.
Hier wird viel spekuliert, also machen wir es einfacher. Wenn der Inhalt hinter einem Ladekreis steckt, ist er langsamer als wenn er es nicht tut. JAMstack ist großartig für statische Inhalte und kann absolut dynamisch sein, aber es ist eine nachrangige Sorge und infolgedessen ist die Leistung nicht so gut. Bitte beachten Sie, dass ich nicht sage, dass es gut oder schlecht ist: nur der Kompromiss, nicht bedarfsgesteuert gerendert zu werden. APIs sind ein gutes Beispiel für dynamisch und schnell. HTML kann das auch!
Sie haben Recht, Brian, das versuchte ich im letzten Beispiel mit dem Ländercode zu vermitteln. In diesem Fall wird die dynamische Lösung wahrscheinlich schneller sein, aber potenziell fragiler. Nichts Gutes oder Schlechtes, nur Kompromisse, wie Sie sagten.
Ich finde einige dieser Diskussionspunkte irreführend, möchte dem Autor hier aber zugutehalten.
Zu behaupten, die Unterschiede zwischen statisch und dynamisch zu definieren und zu sagen, dass die „Linien gezogen sind“, ohne die tatsächliche Unterscheidung zu treffen, ist ziemlich verdächtig.
Es braucht keine 1000 Wörter oder eine verwirrende Definition von Stühlen und Hockern, um zu sagen, dass Dynamik benötigt wird, um personalisierte Inhalte an den Endbenutzer zu liefern.
Wenn es personalisierte oder benutzergenerierte Inhalte gibt, rendern Sie entweder die Seite dynamisch oder bestrafen Sie den Endbenutzer mit einer Ladeanimation, während Ihre Website die Inhalte abruft, die er sehen wollte.
„Nicht alles kann eine statische Website sein“ ist eine Untertreibung und sollte besser formuliert werden als „Nicht alles sollte eine statische Website sein“.
Statische Seiten eignen sich hervorragend für Marketing oder Inhalte, die sich selten ändern. Aber wenn Sie die Seite für Endbenutzer personalisieren müssen, liefert eine statische Seite Ihren Benutzern nicht die beste Erfahrung.
Für das beste personalisierte Erlebnis sollten Sie immer eine Website erstellen, die dynamisch gerendert wird und sich dann im Browser inkrementell aktualisiert. So geben Sie den Benutzern immer das, was sie wollen, ohne sie zwingen zu müssen, auf einen Spinner zu starren, weil Sie den falschen Ansatz gewählt haben.
Danke für Ihre Nachricht, Krisofer. Es war definitiv nicht meine Absicht, jemanden in die Irre zu führen.
Darum geht es in dem Großteil des Artikels. Ich bin mir nicht sicher, wie ich das deutlicher machen könnte, als den Unterschied zwischen statisch und dynamisch zu definieren und dann Grenzfälle zu untersuchen, um zu sehen, auf welcher Seite sie liegen. Bin offen für Ideen, wenn ich etwas übersehen habe.
Ja, genau. Dem stimme ich zu, und das ist das Beispiel, das ich im Fazit mit dem Ländercode gebe. Mein Punkt ist nicht: statisch gut, dynamisch schlecht. Es geht darum, das Problem, das Sie lösen, zu betrachten und über die Kompromisse nachzudenken, die Sie mit verschiedenen Ansätzen eingehen.
Typischerweise gilt: Je näher Sie an statisch herankommen, desto schneller, sicherer und skalierbarer wird Ihre Website sein.
Wie Sie richtig bemerkt haben, können oder machen viele Anwendungsfälle keinen Sinn, vollständig statisch zu sein. Wenn Sie benutzergenerierte Inhalte oder Personalisierung haben, ja, das sind Probleme, die besser für eine dynamische Website geeignet sind. Sie können sie jedoch "statischer" machen, indem Sie Caching oder eine intelligente CDN-Schicht hinzufügen.
Eine elegante Lösung für das Problem der Festlegung der Grenzen von Definitionen.