Frage

Hey alle. Ich bin mit Edge Side auf Varnish Enthält eine statische HTML-Shell cachen, dann sind einige dynamische HTML und ein JSON-Objekt.

Die ESI für HTML wird immer richtig aufgenommen, aber der ESI für das JSON-Objekt ist nicht enthalten ist; Debug-Anweisungen fest, dass Varnish sieht es, aber es entscheidet, aus unerklärlichen Gründen nicht die JSON ESI aufzunehmen.

Hier ist die Ladestruktur:

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.

Auch hier esi 1 und esi 3 Arbeit ganz gut, aber esi 2 ist nicht enthalten zu werden. Der Gehalt an esi 2 ist nur dies:


{session_page_history_id:24231}

Ich habe gelesen, dass ESI-Code, wie XML aussehen keine Fehler verursacht, so dass ich die Runtime-Parameter esi_syntax = 0x7 . Keine Würfel, aber zumindest bin ich nun einige Debug-Daten zu erhalten.

Die unterbrochene Anruf für esi 2 sieht wie folgt aus:


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

Und das (Arbeits-) Aufruf für esi 3 sieht wie folgt aus:


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

Wie bereits erwähnt, erscheint Lack zu erkennen, dass ich versuche, eine ESI zu machen, umfassen, aber dies ist die einzige relevante Debug-Nachricht I von varnishlog bekommen:


   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.

Der Ausgang von einem Client gesehen enthält alle normalen Gehalt, aber mit dem Tag intakt gelassen. Es sieht aus wie, was Sie in der obigen Debug Meldung.

Wer weiß, warum esi 2 nicht analysiert / eingeschlossen zu werden? Jede Hilfe wäre sehr geschätzt!

War es hilfreich?

Lösung

So offensichtlich der ESI-Tag wurde nicht bearbeitet zu werden, weil es in einem // [CDATA [Block war. Ich bin sicher, dass dies etwas mit XML-Compliance zu tun hat. Ich dachte, dass Einstellung esi_syntax = 7, ein solches Problem verhindern würde, aber es stellt sich heraus, dass nur der Inhalt des ESI wirkt sich (es nicht die Sicherheitsprüfungen für den Code heben, die tut das einschließlich).

Die Lösung wird meine Anwendung zu überarbeiten, so dass der ESI seine eigene in sich geschlossen ist Script-Tag.

Andere Tipps

Versuchen Sie, einen umgekehrten Schrägstrich vor dem „&“ im Abfragezeichenfolgeflag hinzuzufügen.

Zumindest bei mir Varnish ignoriert alle Parameter, aber die ersten, wenn Sie es nicht tun.

Z. B .:

Vielleicht werden Sie Probleme mit dem „[“ und „]“ haben, und sie müssen auch einen umgekehrten Schrägstrich.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top