Domanda

Ciao a tutti. Sto usando bordo Side Includes su Varnish per memorizzare nella cache una conchiglia HTML statico, quindi includere alcuni HTML dinamico e un oggetto JSON.

L'ESI per HTML è sempre compresa correttamente, ma l'ESI per l'oggetto JSON non viene incluso; istruzioni di debug stabiliscono che Varnish lo vede, ma decide inspiegabilmente di non includere il JSON ESI.

Ecco la struttura di carico:

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.

Anche in questo caso, ESI 1 e ESI 3 funzionano bene, ma ESI 2 non è sempre incluso. Il contenuto in ESI 2 è proprio questo:


{session_page_history_id:24231}

Ho letto che il codice ESI, che non sembra XML provoca errori, così ho impostato il parametro di runtime esi_syntax = 0x7 . Niente da fare, ma almeno sto ottenendo alcuni dati di debug ora.

La chiamata spezzato per ESI 2 aspetto:


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

E il (di lavoro) richiesta di ESI 3 aspetto:


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

Come ho già detto, Vernice sembra riconoscere che sto cercando di fare un ESI comprendono, ma questo è il messaggio di debug rilevante solo che ricevo da 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.

L'output visto da un client contiene tutto il contenuto normale, ma con il tag lasciato intatto. Sembra proprio come quello che si vede in quanto sopra Debug messaggio.

Qualcuno sa perché esi 2 è non farsi analizzato / incluso? Qualsiasi aiuto sarebbe molto apprezzato!

È stato utile?

Soluzione

Quindi, a quanto pare il tag ESI non è stato sempre elaborata perché era all'interno di un // [CDATA [blocco. Sono sicuro che questo ha qualcosa a che fare con il rispetto XML. Ho pensato che l'impostazione esi_syntax = 7 impedirebbe un tale problema, ma si scopre che che colpisce solo il contenuto della ESI stesso (non sollevare i controlli di sicurezza per il codice che fa il compresa).

La soluzione sarà quella di rielaborare la mia domanda in modo che l'ESI è la sua tag script autonomo.

Altri suggerimenti

Prova ad aggiungere una barra rovesciata prima il "&" in querystring.

Almeno con me Varnish ignora tutti i parametri, ma la prima se non lo fai.

Es .:

Forse avrete problemi con il "[" e "]" e hanno anche bisogno di una barra inversa.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top