Ihr Traffic ganz nach Ihrem Geschmack
Der Kundenstamm von Cloudflare ist sehr breit gefächert. Wir bieten benutzerfreundliche Produkte für alle Aufgaben, HTTP-Header einstellen, URL-Pfad umschreiben, URL-Umleitungen durchführen und vieles mehr. Aber manchmal müssen Kunden über die Standardfunktionalität hinausgehen, sie möchten z. B. nicht nur einen HTTP-Header hinzufügen, sondern eine erweiterte Berechnung durchführen, um die Ausgabe zu erstellen. Heute müssten sie dafür eine Feature-Anfrage erstellen und auf die Auslieferung warten, einen Cloudflare Worker schreiben oder diese Änderung „on origin“ – auf ihrer eigenen Infrastruktur – durchführen.
Wir freuen uns, eine einfachere Lösung vorstellen zu können: Cloudflare Snippets. Snippets sind eine neue Art Traffic-Änderungen vorzunehmen, und zwar solche, die Nutzer entweder nicht über unsere produktspezifischen Angebote vornehmen können oder die sie programmatisch vornehmen möchten. Und das Beste daran? Die überwiegende Mehrheit der Kunden wird für die Nutzung von Snippets nichts extra bezahlen.
Die Nutzer haben jetzt die Wahl. Sie können die Aktion über eine Regel ausführen. Oder, wenn mehr Funktionalität benötigt wird, ein Snippet schreiben. Beides erfordert keine Wartezeit und keine Zusatzkosten (es gilt eine hohe Obergrenze für faire Nutzung). Mit Snippets tun Nutzer, was sie wollen und wann sie wollen. Alles über Cloudflare.
Snippets unterstützt den Import von Code, der in verschiedenen Sprachen geschrieben wurde, wie JavaScript (modern), VCL (veraltet) und Apache .htaccess-Dateien (veraltet). Damit können Kunden veralteten Betriebscode auf unsere Plattform migrieren – und gleichzeitig ihren JavaScript-Betrieb konsolidieren.
Wenn Sie an einem Test interessiert sind, schreiben Sie sich bitte über das Anmeldeformular in die Warteliste für Snippets ein. Wir hoffen, Anfang 2023 die ersten Nutzer für die geschlossene Betaversion zuzulassen.
Warum Snippets bauen?
In den letzten 18 Monaten haben wir eine Reihe von neuen Rules-Produkten veröffentlicht, darunter Transform Rules, Cache Rules, Origin Rules, Config Rules und Redirect Rules. Mit diesen neuen Produkten können unsere Kunden besser kontrollieren, wie wir ihren Traffic auf dem Weg durch unser globales Netzwerk verarbeiten. Die bisherige Resonanz ist überwältigend positiv. Dennoch möchten unsere Kunden gelegentlich über die Standardfunktionalität hinausgehen.
Es gibt immer wieder Anwendungsfälle, bei denen ein Produkt nicht die Funktionalität für die spezielle Situation bietet. Während beispielsweise Tausende unserer Kunden ihre HTTP-Header-Modifikation mit Transform Rules vornehmen, gibt es immer noch eine kleine Anzahl von Anwendungsfällen, die nicht möglich sind, wie z. B. das Setzen von dynamischen Ablaufzeiten mit Cookies oder das Hashing von Token mit einem Schlüssel.
Genau hier helfen Cloudflare Snippets. Kunden müssen für die Implementierung dieser relativ einfachen Anwendungsfälle nicht mehr die gesamte Cloudflare Workers-Plattform nutzen. Sie müssen auch nicht mehr darauf warten, dass wir ihre Feature-Anfragen entwickeln. Stattdessen können sie einfach ein Snippet von JavaScript ausführen.
Veralteten Code zu Snippets migrieren
Die Varnish Control Language (VCL) wird nur im Kontext von Varnish verwendet. Sie wurde vor etwa 16 Jahren eingeführt und in der Vergangenheit zur Konfiguration von Traffic und Routing für Content Delivery Networks verwendet, da sie für eine Vielzahl von Anwendungsfällen erweiterbar war.
Noch immer nehmen viele Unternehmen mit VCL Routing- und Traffic-Änderungen vor. Während andere Provider die Unterstützung für VCL auslaufen lassen, möchten wir für alle, die diese Sprache gerne verwenden, weiterhin Unterstützung anbieten.
Snippets werden keine reine VCL ausführen. Stattdessen werden wir VCL in einfach zu pflegende Regeln oder Snippets umwandeln. Dafür entwickeln wir einen einfach zu bedienenden Self-Serve-VCL-Konverter, der hochgeladenen VCL-Code analysiert und automatisch Snippets vorschlägt. Und wenn wir eine Übereinstimmung finden, generiert er auch Regelvorschläge für Produkte wie Transform Rules oder Cache Rules.
Dieses Thema wurde zunächst über Project Turpentine gehandhabt, eine Reihe von Tools, mit denen Cloudflare-Mitarbeiter die VCL eines Kunden in eine vorgeschlagene JavaScript-Konfiguration parsen konnten. Dieses JavaScript konnte dann in einen Worker oder eine Reihe von Workern geladen werden.
Snippets führt die Idee und die Prinzipien von Turpentine weiter. Viel weiter. Durch die direkte Integration eines Parsers in das Dashboard bekommen die Nutzer die Zügel direkt in die Hand und haben die Wahl. Sie können uns anweisen, möglichst alles in Rules zu migrieren, während der Restcode in Snippets migriert wird – oder Sie weisen uns an, alles in diskrete Snippets zu migrieren. Sie entscheiden selbst.
Apache htaccess- und NGINX-Konfigurationsdateien behandeln wir auf die gleiche Weise. Das Ziel: Nutzer laden einfach die Dateien aus der Apache- oder NGINX-Konfiguration ihrer Website hoch und wir generieren vorgeschlagene Snippets und/oder Regeln.
Die Zeiten, in denen veralteter Code für operative Aufgaben verwendet werden musste, neigen sich dem Ende zu. Mit Snippets können Nutzer diese Workloads zu Cloudflare migrieren und sich auf die größeren Probleme des Unternehmens konzentrieren, anstatt veraltete Systeme zu pflegen.
Der Unterschied zwischen Snippets und Workern
Die meisten Leser werden bereits mit Cloudflare Workers vertraut sein, unserer leistungsstarken Entwicklerplattform, mit der Unternehmen ganze Produkte und Lösungen auf dem globalen Netzwerk von Cloudflare betreiben und aufbauen können. Snippets basiert ebenfalls auf dieser Plattform, aber mit einigen wichtigen Unterschieden.
Der erste große Unterschied: Ein Snippet wird als Teil der Regelsatz-Engine als eigene neue Phase ausgeführt, ähnlich wie Transform Rules und Cache Rules. Kunden werden ein Snippet auf der Grundlage eines beliebigen Filters der Regelsatz-Engine auswählen und ausführen können. So können Kunden ein Snippet für jede Anfrage ausführen oder auf der Grundlage der von uns angebotenen Felder nach bestimmtem HTTP-Traffic filtern, z. B. nach Traffic mit einem bestimmten Bot Score, aus einem bestimmten Land oder mit einem bestimmten Cookie. Snippets werden additiv sein, d. h. Nutzer können mit einem Snippet einen HTTP-Header hinzufügen und mit einem anderen die URL umschreiben, und beide werden bei Übereinstimmung ausgeführt:
Ein weiterer großer Unterschied: Cloudflare Snippets sind für alle Tarifstufen verfügbar, ohne zusätzliche Kosten. 99 % der Nutzer werden keinen einzigen Cent für die Nutzung dieser Lösung bezahlen – weder jetzt, noch in Zukunft. So können Kunden ihre einfachen Workloads von veralteten Lösungen wie VCL auf die Cloudflare-Plattform migrieren und ihre monatlichen Ausgaben aktiv senken.
Free-Tarife
Free Plans | Pro Plans | Business Plans | Enterprise Plans | |
---|---|---|---|---|
Snippets available | 5 Snippets per zone. | 20 Snippets per zone. | 50 Snippets per zone. | 200 Snippets per zone* (Customers can speak with their Customer Success team to have this increased). |
Pro-Tarife
Cloudflare Snippets | Cloudflare Workers Unbound (For comparison) |
|
---|---|---|
Runtime support | JavaScript | JavaScript and WASM |
Execution location | Global - All Cloudflare locations | Global - All Cloudflare locations |
Triggers supported | Ruleset Engine Filters | HTTP Request HTTP Response Cron Triggers |
Maximum execution time | 5ms | 30 Seconds HTTP 15 Minutes (Cron Trigger) |
Maximum memory | 2MB | 128MB |
Total package size | 32KB | 5MB |
Environment variables | 8/Snippet | 64/Worker |
Environment variable size | 1KB | 5KB |
Subrequests | 1/request | 1000/request |
Terraform Support | ✅ | ✅ |
Wrangler Support | ✅ | |
Cron Triggers | ✅ | |
Key Value Store | ✅ | |
Durable Objects | ✅ | |
R2 Integration | ✅ |
Business-Tarife
Enterprise-Tarife
Verfügbare Snippets
5 Snippets pro Zone.
…
if (request.cf.botManagement.score < 30) {
const honeypot = "https://example.com/";
return await fetch(honeypot, request);
…
}
20 Snippets pro Zone.
50 Snippets pro Zone.
…
{
let res = await fetch(request);
res = new Response(res.body, res);
// 24h * 60m * 60s * 1000ms = 86400000ms
const expiry = new Date(Date.now() + 7 * 86400000).toUTCString();
const group = request.headers.get("userGroup") == "premium" ? "A" : "B";
res.headers.append(
"Set-Cookie",
`testGroup=${group}; Expires=${expiry}; path=/`
);
…
200 Snippets pro Zone* (Kunden können diese Zahl in Absprache mit ihrem Customer Success Team erhöhen lassen).
Cloudflare Snippets sind im Vergleich zu Workers leichtgewichtig und bieten eine maximale Ausführungszeit von 5 ms, einen maximalen Arbeitsspeicher von 2 MB und eine Gesamtpaketgröße von 32 KB. Dank dieses vergleichsweise geringen Platzbedarfs bieten wir 99 % der Nutzer diese Lösung ohne zusätzliche Kosten an. Gleichzeitig reicht sie aus für die identifizierten Anwendungsfälle wie die Änderung von HTTP Headern, das Umschreiben von URLs und das Routing des Traffics, die alle nicht die enormen Ressourcen der Cloudflare Workers benötigen.
…
if (userAgent.includes("Facebook")) {
const url = new URL(request.url);
const params = new URLSearchParams(url.search);
params.set("utm_campaign", "facebook");
url.search = params.toString();
const transformedRequest = new Request(url, request)
…
}
Cloudflare Snippets
Cloudflare Workers Unbound(zum Vergleich)
Runtime-Unterstützung
JavaScript
JavaScript und WASM
Ausführungsort
Global – Alle Cloudflare-Standorte
Global – Alle Cloudflare-Standorte
Unterstützte Trigger
Filter der Regelsatz-Engine
HTTP-AnfrageHTTP-AntwortCron Trigger
Maximale Ausführungszeit
5ms
30 Sek. HTTP15 Min. (Cron Trigger)
Maximaler Arbeitsspeicher
2MB
128MB
Gesamtpaketgröße
32KB
5MB
Umgebungsvariablen
8/Snippet
64/Worker
Größe der Umgebungsvariablen
1KB
5KB
Unteranfragen
1/Anfrage
1000/Anfrage
Terraform-Unterstützung
✅
✅
Wrangler-Unterstützung
✅
Cron Triggers
✅
Key Value Store
✅
Durable Objects
✅
R2-Integration
✅
Was wird man mit Cloudflare Snippets entwickeln können?
Snippets werden Kunden die Migration ihrer bestehenden Workloads zu Cloudflare ermöglichen. Außerdem eröffnen sie eine Reihe neuer Anwendungsfälle für Kunden. Nachfolgend haben wir drei gängige Beispiele aufgeführt, aber es gibt noch viele weitere.
Beispiel 1: Verdächtige Bots an einen Honeypot senden
Bei der Erstellung von Snippets können Kunden auf Cloudflare-Features zugreifen, die in der Workers-Runtime verfügbar sind, wie zum Beispiel das Bot Score-Feld. Damit können Kunden eine HTTP-Anfrage an einen Honeypot weiterleiten oder mit der Javascript-Funktion RegExp das URL-Konstrukt ändern, das an den Nutzer zurückgesendet wird, wenn der Traffic einen Bot Score unter einem bestimmten Threshold (z. B. 29 und niedriger) aufweist.
Beispiel 2: Änderung eines Cookies
Ein weiterer häufiger Anwendungsfall, für den wir Snippets erwarten, ist die Änderung von Cookies. Die Einsatzmöglichkeiten reichen vom einfachen Setzen einer Ablaufzeit von fünf Minuten mit den JavaScript-Funktionen getTime
und setTime
bis hin zum Setzen eines dynamischen Cookies auf der Grundlage der Anfragesteller-Attribute des Nutzers zu A/B-Testzwecken.
Beispiel 3: Verwaltung von URL-Abfragen
Kunden können Cloudflare Snippets auch für komplexe Operationen einsetzen, z. B. um den Wert der URL-Abfrage zu splicen und selektiv zusätzliche Parameter zu entfernen oder einzufügen. Die Bearbeitung von Abfrage-Strings erfolgt in der Regel mit Transform Rules. Bei Transform Rules ist die set/
-Aktion jedoch effektiv eine replace
-Aktion. Wenn diese Aktion auf die URL-Abfrage angewandt wird, wird der gesamte Wert, sofern vorhanden, entfernt und auf den vom Nutzer angegebenen Wert gesetzt, d. h. er wird überschrieben. Dies ist ein Problem für Kunden, die gezielt bestimmte Abfrageparameter für passenden Traffic einfügen möchten. Wie das Setzen einer zusätzlichen Abfrage, z. B. ?utm_campaign=facebook
, wenn gängige Social Media-Plattformen im User Agent erkannt werden. Mit Snippets können Kunden dieses selektive Entfernen und Einfügen mit einem einfachen Stück JavaScript durchführen, z B.
Wir sind gespannt, welche weiteren Anwendungsfälle Cloudflare Snippets für unsere Kunden erschließen werden.
Heißt es, keine neuen Aktionen zu Regelsätzen mehr?
Die einfache Antwort ist nein! Wir werden unsere No-Code-Aktionen innerhalb der Regelsatz-Engine weiter ausbauen und neue Produkte für die Anforderungen unserer Kunden entwickeln.
Es mag offensichtlich klingen – aber alle Feature-Verbesserungen ergeben sich aus Gesprächen mit Kunden. Durch Gespräche mit den Nutzern von Snippets erfahren wir, welche Anwendungsfälle Snippets in der Praxis lösen und welche Feature-Lücken in unserer Produktpalette noch offen sind. Dann können wir prüfen, ob es sinnvoll ist, diesen Anwendungsfall in ein Produkt zu überführen, oder es bei Snippets zu belassen.
Wir verstehen auch, dass nicht alle Leute Softwareentwickler sind. Wir arbeiten daher daran, Snippets für alle zugänglich zu machen, indem wir Vorlagen in einer Bibliothek bereitstellen, die von den Kunden kopiert und verändert werden können, wobei nur minimale Programmierkenntnisse erforderlich sind. Mit Snippets bedeutet „leistungsstark“ nicht gleich „kompliziert“.
Auf Cloudflare Snippets zugreifen
Snippets befinden sich derzeit in der Entwicklung. Hier können Sie sich auf die Warteliste setzen lassen.
Wir hoffen, ab Anfang 2023 Nutzer in die geschlossene Betaphase aufnehmen zu können, eine offene Betaphase wird folgen.