Nous utilisons un site de contenu à volume relativement élevé. Comme la plupart des sites de contenu, la majorité de chaque page est relativement statique. Les articles changent rarement, ce qui en fait de bons candidats pour une certaine forme de mise en cache statique/de bord. Il y a deux gros problèmes, cependant. Les éléments de page secondaire (navigation, listes de contenu récentes, etc.) changent assez fréquemment, invalidant rapidement les pages mises en cache "complètes". Il est également courant que nous incluions plus de bits dynamiques dans une page, comme des informations spécifiques à l'utilisateur, etc.Post-traitement des demandes HTTP inversées par proxy? (comme l'ESI d'Akamai)
Il serait vraiment intéressant d'avoir un reverse-proxy/équilibreur de charge qui post-traitement du contenu et laissez-nous gérer inclut à le proxy/bord. La demande initiale au backend renverrait un modèle approximatif, puis le logiciel proxy pourrait traiter ce modèle pour le compléter. Le balisage pourrait ressembler à ceci:
<html>
<body>
<div id="content">
Lorem ipsum whackem smackem.
<%
dynamic "http://related.content.service/this/story"
%>
</div>
<div id="sidebar">
<%
dynamic do |request|
url = "http://my.user.service/user-widget.html"
if request.cookies.contains?("user_token")
url = "http://my.user.service/" + request.cookies["user_token"] + "/user-widget.html"
end
error_text = "User service not available"
{ :url => url, :timeout => 500, :error => error_text }
end
%>
</div>
</body>
</html>
Ce que vous verrez dans cet exemple est un petit peu de Ruby qui détermine le fichier inclus sur la base d'une valeur de cookie, puis retourne un hachage avec l'URL de tirer dans , un délai et un texte par défaut à afficher en cas d'erreur. En théorie, tous les inclusions pourraient également être demandés de manière asynchrone.
Ma compréhension est que Amazon fait quelque chose comme ça. Divers composants de page sont générés par les services backend, avec des limites de délai strictes pour assurer la vitesse globale de la page. J'espérais que leur service CDN inclurait quelque chose comme ça, mais ce n'est pas le cas!
Il ya une spécification W3 pour Edge Side Includes (ESI) est presque ce que je veux. Cependant, il y a très peu de soutien. Il est disponible via Akamai, il y a un logiciel Oracle qui le fait, et le cache Varnish open source a une implémentation très basique. C'est aussi un format XML vraiment moche.
Alors la question est: qu'est-ce qui va me permettre de faire ce que je veux? Est-ce que quelqu'un d'autre fait les choses de cette façon?
Pouvez-vous développer cette réponse? Cela ne semble pas me donner beaucoup de ce que je veux, mais il est possible qu'il me manque quelque chose. – MrKurt
Ah, c'est un peu plus utile. Rappelez-vous que les «choses» que SSI peut insérer dans la page entière peuvent être générées de manière dynamique par n'importe quel type de scénario qui m'intéresse. – MrKurt
serveur principal. – Javier