GraphQL ist eine beliebte Abfragesprache zum Lesen und Mutation von Daten in APIs und ist eine Schlüsseltechnologie im Trend zu Headless-Websites. Web-Builder können ihre API-Schicht flexibel, leistungsstark und effizient gestalten. Entwickler stehen jedoch vor Herausforderungen, wenn sie GraphQL-APIs an der Netzwerkperipherie zwischenspeichern. Aus diesem Grund hat Edgio eine Lösung entwickelt, die das Edge-Caching für GraphQL vereinfacht und es Teams ermöglicht, den GraphQL-Server in einer serverlosen Umgebung zu hosten. GraphQL-Caching schließt eine Lücke auf dem Markt für Headless- und API-First-Webanwendungen und beweist den Wert des Zusammenschlusses von Layer0 und Limelight.
Was ist GraphQL
Die GraphQL-Abfragesprache verbessert sich gegenüber herkömmlichen REST-APIs und hat ein enormes Wachstum und eine enorme Akzeptanz bei Entwicklern verzeichnet. GraphQL wurde ursprünglich bei Facebook inkubiert und später Open-Source-Software entwickelt und bietet deklarative, effiziente Datenabrufe, wodurch die Leistung deutlich verbessert wird. Darüber hinaus ermöglicht das stark typisierte Schema zwischen Client und Server Teams die schnellere und unabhängige Iteration ihrer APIs ohne Probleme bei der Versionssteuerung.
GraphQL kann mit jedem Backend-Framework oder jeder Programmiersprache verwendet werden. Dieser Vorteil, gepaart mit seinem leistungsstarken Tool (z. B. starke Tippfunktion und integrierte Unterstützung für Introspektion), macht GraphQL besonders beliebt bei Entwicklern aus Unternehmen, die kopflose oder API-First-Architekturen wie Twitter und Airbnb verwenden. In der jährlichen „State of JS“–Umfrage erzielte GraphQL die höchsten Bewertungen bei den Entwicklern im Hinblick auf Bekanntheit (98 %), Zufriedenheit (94 %) und Interesse (87 %) als bei jeder anderen Lösung auf Datenebene.
Caching-Probleme mit GraphQL am Edge
Herkömmliche CDNs und Caching-Software wurden um REST-APIs erstellt, in denen nur HTTP GET-Anforderungen gecacht werden können und der Cacheschlüssel von der REST-URL abgeleitet werden kann. Leider verwendet GraphQL das komplexere HTTP POST-Format, und die Cacheability und Cache-Schlüssel müssen aus dem HTTP-Body bestimmt werden. Es wäre zwar toll, wenn ein einfacher Switch-Flip HTTP-POST zwischenspeichern könnte, aber so einfach ist es nicht. Um GraphQL zu cachen, muss das CDN in der Lage sein, das GraphQL-Format zu analysieren und zu verstehen – was nicht möglich ist. Daher stellt GraphQL-Leistung eine Herausforderung für Entwickler dar.
Es ist üblich, dass Entwicklungsteams Zeit damit verbringen, Workarounds von Grund auf zu erstellen, um GraphQL zu cachen – und selbst dann ist das Caching nicht optimal. Eine fehlerhafte Verwaltung von GraphQL kann zu niedrigen Cache-Trefferraten führen. Wenn es richtig gemacht wird, führt das Caching von GraphQL an der Peripherie jedoch zu schnelleren, zuverlässigeren und skalierbaren APIs. Layer0 macht das einfach.
Layer0 löst Caching-Herausforderungen an der Netzwerkperipherie
Layer0 bietet vollständige Unterstützung für das Caching von GraphQL-APIs an der Peripherie, was zu einer besseren Performance und weniger Datenverkehr am Ursprung führt. Layer0 löst die zentrale Herausforderung, GraphQL-APIs am Netzwerkrand zu cachen, indem es GraphQL-Parsing und Unterstützung für die POST-Methode in EdgeJS, einer leistungsstarken, JavaScript-basierten deklarativen Sprache für Edge-Logik, hinzufügt. Mit EdgeJS können Webbuilder leistungsstarke benutzerdefinierte Caching-Logik basierend auf den Eigenschaften ihrer GraphQL-Abfragen und HTTP-Header erstellen, wie Cookies und Authentifizierung.
Mit EdgeJS von Layer0 kann ein Entwickler aus einer GraphQL-Antwort Informationen wie eine Produkt-ID in einer eCommerce-API zwischenspeichern. Sie kann auch Attribute wie Sprache, Währung und Personalisierungseinstellungen, die in den Anforderungsheadern eingebettet sind, zwischenspeichern. Diese können durch andere nicht-GraphQL-Komponenten im Stack definiert werden, die noch nicht zu GraphQL migriert wurden.
Nach dem Caching ermöglicht Layer0 Ihnen, einzelne oder Sammlungen von Abfragen vom Edge zu löschen, indem Sie jeder gecachten Antwort Surrogatschlüssel zuweisen. In einer E-Commerce-Anwendung können Entwickler beispielsweise EdgeJS verwenden, um Teams die Möglichkeit zu geben, den Cache selektiv nach Produkt-ID, Produktkategorie oder einem anderen Produktattribut in der Layer0 (Edgio)-Konsole oder APIs zu löschen.
Um dies genauer zu verstehen, sehen Sie sich die nachfolgende Demo an, in der Sie erfahren, wie Sie eine REST-API in GraphQL konvertieren und Caching an der Edge mithilfe des beliebten Next.js-Frameworks, Apollo Server und Layer0 hinzufügen.
Erzielen Sie eine Cache-Trefferrate von 100 %
Kein anderes CDN arbeitet so hart wie Layer0, damit Teams ihre Cache-Trefferrate maximieren können. EdgeJS erleichtert Entwicklern die Konfiguration des Cachings innerhalb ihrer Anwendung, sodass Entwickler das zuvor nicht erreichbare Caching im Cache speichern können.
EdgeJS ist flexibel und leistungsstark und unterstützt moderne Caching-Funktionen wie veraltete, revalidierende und Surrogatschlüssel. Unsere Kunden haben bereits Ersatzschlüssel verwendet, um Layer0 mit ihren Bestell- und Content-Management-Systemen zu verbinden, um einzelne Produktseiten aus dem Cache zu löschen, wenn sich Lagerbestand, Preis oder Inhalt ändert. Auf diese Weise können hohe Cachetrefferquoten für alle anderen Seiten und APIs beibehalten werden, die sich nicht geändert haben, wenn sich ein einzelnes Element ändert.
Darüber hinaus umfasst die Plattform auch die automatische Cache-Erwärmung der Inhalte mit dem höchsten Datenverkehr nach einer Bereitstellung. Das Layer0-Netzwerk koordiniert Routing und Zwischenspeicherung zwischen POPs, um die Wahrscheinlichkeit eines Cachetreffers zu maximieren. Wenn ein POP keine Daten enthält, wird es von einem anderen POP leistungsfähig angefordert, bevor die Anforderung an den Ursprungsserver weitergeleitet wird. Um die Website-Performance und die Cache-Trefferrate einfach zu überwachen, können Entwickler auf Beobachtbarkeit und wichtige Kennzahlen zugreifen. Aus Gründen der Granularität hebt die Plattform proaktiv Anwendungsrouten hervor, die verbessert werden müssen.
Edgio wird von den größten Streaming-Unternehmen der Welt, einschließlich der Premier League Football Clubs und der BYJU, vertraut. Edgio verfügt über mehr als 135 Points of Presence (POP) rund um den Globus, die über die durchschnittlichen Funktionen eines CDN hinausgehen und Daten untereinander koordinieren, um den Cache aufzuwärmen.
Serverloses Hosting von GraphQL
Edgio bietet auch serverlose Dienste, einschließlich GraphQL-Hosting. Teams können Laufzeitaufrufe verwalten und an den GraphQL-Server weiterleiten, der in einer serverlosen Umgebung auf Layer0 gehostet wird. Dadurch werden keine Sorgen um Infrastruktur und Skalierung mehr gemacht.
Steigern Sie Produktivität, Leistung und Sicherheit mit Edgio
Layer0 unterstützt Web-Builder-Teams bei der Steigerung der Entwicklerproduktivität, Steigerung der Website-Performance und Verbesserung der Sicherheit. Layer0 erleichtert die Entwicklung und Pflege der Edge-Logik während des gesamten Entwicklungslebenszyklus und die Bereitstellung von Websites in weniger als einer Sekunde durch vorausschauendes Prefetching dynamischer Inhalte. Dies macht es zum CDN, das Entwicklungsteams gerne verwenden.
Layer0 umfasst alles, was die Entwicklung betrifft, und DevOps-Teams müssen eine Headless- oder JAMstack-Architektur implementieren, einschließlich Hosting, serverlos, Observability, RUM und CI/CD-Integration. Teams können bei der Nutzung von Layer0 flexibel sein. Sie können damit ihre GraphQL-APIs zwischenspeichern, ihren GraphQL-Server in einer serverlosen Umgebung ausführen oder ihre gesamte kopflose Anwendung hosten. Layer0 verfügt außerdem über leistungsstarke Routing-Optionen, mit denen Teams Legacy-Anwendungen schrittweise auf Headless- oder API-First-Architekturen migrieren können.
Die Unterstützung von GraphQL und die Kompatibilität mit älteren Systemen machen Edgio ideal für große Unternehmen, die auf GraphQL mit einer Mischung aus traditionellen und modernen Komponenten migrieren.