Question

Salut tout le monde. J'utilise bord latéral Comprend sur Varnish pour mettre en cache un shell HTML statique, puis d'inclure du HTML dynamique et un objet JSON.

L'ESI HTML est inclus se correctement, mais l'ESI pour l'objet JSON n'est pas inclus; des instructions de débogage établissent que le vernir voit, mais il décide de ne pas inclure inexplicablement JSON ESI.

Voici la structure de chargement:

page uncached. blank page with headers to set a cookie and esi 1
esi 1 cached. A bunch of static HTML, plus esi 2 and esi 3
esi 2 uncached. A JSON object which is different on every page load.
esi 3 uncached. Some HTML which updates with every page load.

Encore une fois, esi 1 et esi 3 fonctionnent très bien, mais esi 2 ne s'inclus. Le contenu à esi 2 est ceci:


{session_page_history_id:24231}

J'ai lu que le code ESI qui ne ressemble pas à des erreurs XML provoque, donc je définir le paramètre d'exécution esi_syntax = 0x7 . Pas de dés, mais au moins que je reçois des données de débogage maintenant.

L'appel rompu pour esi 2 ressemble à ceci:


<esi:include src="http://www.domain.com/dynamic_esi/print_variables?esi__desired_var_names[]=session_page_history_id&for_esi=1"/>

Et le (travail) appel à esi 3 ressemble à ceci:


<esi:include src="http://www.domain.com/dynamic_esi/get_service_magic_html?&for_esi=1"/>

Comme je l'ai mentionné, Varnish semble reconnaître que je suis en train de faire une ESI comprennent, mais est le seul pertinent message que je reçois de débogage varnishlog:


   25 Debug        c AddBit: 6997 <<![CDATA[

window.esi__values =

<esi:include src="http://www.domain.com/dynamic_esi/print_variables?esi__desired_var_names[]=session_page_history_id&for_esi=1"/>
;

 //]]>
 </script>
 <link rel="stylesheet" href="http://www.

La sortie vu par un client contient tout le contenu normal, mais avec le balise laissée intacte. Il ressemble à ce que vous voyez dans le message ci-dessus Debug.

Quelqu'un sait pourquoi esi 2 ne s'analysable / inclus? Toute aide serait grandement appréciée!

Était-ce utile?

La solution

Donc, apparemment, l'étiquette ESI n'a pas été traitée, car il se trouvait à l'intérieur d'un // [CDATA [bloc. Je suis sûr que cela a quelque chose à voir avec la conformité XML. Je pensais que ce paramètre esi_syntax = 7 empêcherait un tel problème, mais il se trouve que cela affecte seulement le contenu de l'ESI lui-même (il ne soulève pas les contrôles de sécurité pour le code qui fait l'y compris).

La solution sera de retravailler ma demande afin que l'ESI est sa propre balise script autonome.

Autres conseils

Essayez d'ajouter une barre oblique inverse avant dans le querystring « et ».

Au moins avec moi Varnish ne tient pas compte de tous les paramètres, mais le premier si vous ne le faites pas.

.: par exemple

Peut-être que vous aurez des problèmes avec le « [ » et « ] » et ils seront également besoin d'une barre oblique inverse.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top