Welche CDN-Lösungen unterstützen das Caching mit Inhaltsverhandlung?

9

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:

  • %Code%
    Ergebnisse in JSON
  • %Code% Ergebnisse in Turtle

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.

Beispiel für das, was schief geht

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 :

  1. Ich frage nach Accept in JSON durch curl;
    Als Antwort fragt CloudFlare das JSON-Original vom Server ab, speichert es und führt es aus.
  2. Ich frage nach graph.facebook.com durch meinen Browser (also in HTML);
    Als Antwort sendet CloudFlare die zwischengespeicherte JSON-Repräsentation (!), obwohl der ursprüngliche Server die HTML-Version gesendet hätte.

Was würde stattdessen benötigt werden

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:

%Vor%

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.

    
Ruben Verborgh 27.11.2013, 12:39
quelle

2 Antworten

0

Scheint, dass maxcdn immernoch benutzerdefinierte nginx Regeln für die Inhaltsverhandlung einrichten kann (trotz was ihre FAQ sagt) - Ссылка

    
George K 18.12.2013 19:09
quelle
-1

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?

    
damoncloudflare 02.12.2013 19:41
quelle