Cloudflare a lancé Origin Range Requests, une fonctionnalité conçue pour rendre plus efficace la mise en cache des requêtes partielles portant sur de gros fichiers. Disponible avec toutes les offres, elle peut être activée au moyen d’une règle de cache et ne nécessite ni de choisir la taille des plages ni de contacter l’assistance.

Les requêtes HTTP par plage permettent à un client de récupérer des octets sélectionnés au lieu de télécharger un fichier entier. Elles sont utilisées par les lecteurs vidéo qui se déplacent jusqu’à un passage précis, les gestionnaires de téléchargement qui reprennent des transferts interrompus et les dépôts logiciels qui servent des parties de gros paquets. Cloudflare indique que son approche précédente pouvait récupérer beaucoup plus de données que le client n’en demandait : une petite lecture pouvait déclencher un transfert de 128 Mio depuis l’origine dans l’une de ses anciennes configurations.

Le nouveau système utilise des blocs de taille fixe déjà employés par Pingora, le serveur de mise en cache de Cloudflare. Il vérifie quels octets demandés sont en cache, récupère les données manquantes depuis l’origine dans des plages alignées sur les limites des blocs, puis ne renvoie que les octets demandés par le client. Lorsqu’une autre requête nécessite des octets couverts par un téléchargement déjà en cours, elle peut partager ce travail au lieu de lancer une récupération distincte depuis l’origine.

Cloudflare indique que cette coordination permet également de combiner, dans une seule réponse, les données en cache et celles qui arrivent depuis l’origine. Le système vérifie que les éléments appartiennent à la même version du fichier avant de les combiner, notamment en faisant correspondre l’étiquette d’entité et en confirmant la taille totale du fichier. Si une plage ne peut pas être servie de manière sûre, Cloudflare renvoie plutôt la représentation complète.

L’entreprise affirme que cette évolution a réduit d’environ moitié le temps p99 jusqu’au premier octet pour R2, son service de stockage d’objets, dans toutes les régions de stockage, aussi bien en cas de succès que d’échec du cache. Une autre amélioration a réduit d’environ 6 % d’une semaine à l’autre le trafic du cache hiérarchisé pour R2 et les charges de travail similaires.

Les clients peuvent activer la fonctionnalité en créant une règle de cache pour le trafic impliquant de gros fichiers et en réglant Origin Range Requests sur On. Elle est destinée aux objets pouvant être mis en cache et demandés par les clients par morceaux, notamment les vidéos avec navigation par recherche, les téléchargements reprenables, les distributions logicielles, les archives, les images disque et les fichiers de modèles volumineux. La fonctionnalité ne rend pas éligibles à la mise en cache les réponses qui ne le sont pas autrement, et l’origine doit prendre en charge les plages d’octets pour que les récupérations partielles depuis l’origine soient utiles.

Sources: Cloudflare Blog.