Ich verwende eine Reihe von Ressourcen durch Inhaltsverhandlung .
Konkret kann jede URL in verschiedenen Formaten dargestellt werden,
abhängig vom Accept
Header des Clients.
Ein Beispiel dafür ist auf Facebook zu sehen:
Ich suche nach einem CDN , der Inhalt basierend auf URL und dem curl -H "Accept: application/json" http://graph.facebook.com/daft-punk
Header des Clients zwischenspeichert.
CloudFlare unterstützt dies nicht: Wenn ein Client nach HTML fragt, erhalten alle nachfolgenden Anfragen an diese URL die HTML-Darstellung, unabhängig von ihren Einstellungen. Andere haben ähnliche Probleme.
Wenn ich beispielsweise CloudFlare über curl -H "Accept: text/turtle" http://graph.facebook.com/daft-punk
platzieren würde (und es so konfigurieren würde, dass es "erweiterungsfreie" Ressourcen zwischenspeichert), würde es sich falsch verhalten :
Accept
in JSON durch curl; graph.facebook.com
durch meinen Browser (also in HTML); Das korrekte Verhalten würde lauten, dass CloudFlare den Server erneut fragt, da der zweite Client einen anderen http://graph.facebook.com/daft-punk
Header hat.
Danach können Anfragen mit ähnlichen http://graph.facebook.com/daft-punk
-Köpfen aus dem Cache bedient werden.
Welche CDN-Lösungen unterstützen Content-Negotiation und cachen ausgehandelten Content?
Beachten Sie also, dass nur das Akzeptieren von nicht ausreicht; ausgehandelte Antworten sollten ebenfalls zwischengespeichert werden.
PS1: Es ist einfach, Ihre eigenen Caching-Server zu unterstützen. Zum Beispiel für nginx:
Beachten Sie, wie der Header Accept
des Clients Teil des Schlüssels ist, der den Cache indiziert. Ich möchte das auf CDN.
PS2: Es ist keine Option, verschiedene URLs für unterschiedliche Darstellungen zu verwenden. Meine Anwendung befindet sich in der Domäne Verknüpfte Daten , in der URLs eine wichtige Rolle bei der Identifizierung spielen.
Ich kann mir überhaupt keine Gedanken darüber machen, wie wir das jetzt beeinflussen könnten. Zum Beispiel Cache HTML standardmäßig . Hast du tatsächlich ein Problem damit gesehen? Hast du ein Supportticket geöffnet?
Tags und Links http caching cdn cloudflare content-negotiation