Cloudflare hat Origin Range Requests eingeführt, eine Funktion, die das Caching partieller Anfragen für große Dateien effizienter machen soll. Sie ist in allen Tarifen verfügbar und kann über eine Cache Rule aktiviert werden. Kunden müssen weder eine Bereichsgröße festlegen noch den Support kontaktieren.

Mit HTTP-Range-Requests kann ein Client ausgewählte Bytes abrufen, statt eine ganze Datei herunterzuladen. Sie werden von Videoplayern verwendet, die zu einer bestimmten Stelle springen, von Download-Managern, die unterbrochene Übertragungen fortsetzen, und von Software-Repositories, die Teile großer Pakete bereitstellen. Cloudflare zufolge konnte der bisherige Ansatz wesentlich mehr Daten abrufen, als ein Client angefordert hatte: Ein kleiner Lesevorgang konnte bei einer der früheren Konfigurationen einen Origin-Transfer von 128 MiB auslösen.

Das neue System verwendet Chunks fester Größe, die Pingora, Cloudflares Caching-Server, bereits einsetzt. Es prüft, welche der angeforderten Bytes im Cache liegen, ruft fehlende Daten vom Origin in Bereichen ab, die an den Chunk-Grenzen ausgerichtet sind, und liefert nur die vom Client angeforderten Bytes zurück. Benötigt eine weitere Anfrage Bytes, die durch einen bereits laufenden Download abgedeckt werden, kann sie sich diese Arbeit teilen, statt einen separaten Abruf vom Origin zu starten.

Laut Cloudflare sorgt diese Koordination außerdem dafür, dass gecachte Daten und vom Origin eintreffende Daten in einer einzigen Antwort zusammengeführt werden. Das System prüft vor dem Zusammenführen, ob die Teile zur selben Dateiversion gehören. Dazu gleicht es den Entity-Tag ab und bestätigt die Gesamtgröße der Datei. Kann ein Bereich nicht sicher bereitgestellt werden, gibt Cloudflare stattdessen die vollständige Repräsentation zurück.

Das Unternehmen gibt an, dass die Änderung die p99-Zeit bis zum ersten Byte bei R2, seinem Objektspeicherdienst, über alle Speicherregionen hinweg sowohl bei Cache-Treffern als auch bei Cache-Fehlgriffen ungefähr halbiert hat. Eine weitere Verbesserung verringerte den Datenverkehr über den Tiered Cache für R2 und ähnliche Workloads im Wochenvergleich um etwa 6 %.

Kunden können die Funktion aktivieren, indem sie für Datenverkehr mit großen Dateien eine Cache Rule erstellen und Origin Range Requests auf On setzen. Sie ist für cachebare Objekte gedacht, die Clients in Teilen anfordern, darunter seekfähige Videos, fortsetzbare Downloads, Software-Distributionen, Archive, Datenträgerabbilder und große Modelldateien. Die Funktion macht Antworten, die ansonsten nicht für das Caching infrage kommen, nicht cachebar. Damit partielle Abrufe vom Origin sinnvoll sind, muss der Origin Byte-Ranges unterstützen.

Quellen: Cloudflare Blog.