2010-12-21 21 views
0

皆さん。私はワニスにEdge Side Includesを使って静的なHTMLシェルをキャッシュし、いくつかのダイナミックHTMLとJSONオブジェクトをインクルードします。ワニスESIは認識されますが、含まれません。

HTML用のESIが正しく組み込まれていますが、JSONオブジェクト用のESIは含まれていません。デバッグステートメントは、Varnishがそれを認識していることを示していますが、JSON ESIを含めないと決定しません。

ここで積載構造です:

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

ここでも、ESI 1ESI 3仕事だけで罰金は、しかしESI 2は含まれて取得されていません。


{session_page_history_id:24231} 

私はXMLのようには見えませんESIコードは、エラーが発生するので、私は=を0x7ランタイムパラメータesi_syntaxを設定することをお読みください。ESI 2の内容はこれだけです。サイコロはありませんが、少なくとも私はデバッグデータを取得しています。

ESI 2ための壊れたコールは、次のようになります。ESI 3ため


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

と(作業)の呼び出しのようになります。私が述べたように


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

、ワニス私がESIをインクルードしようとしていることを認識しているようですが、これはvarnishlogから得られる唯一の関連デバッグメッセージです:

クライアントに表示される出力には、すべての通常のコンテンツが含まれますが、< esi>タグはそのままです。上記のデバッグメッセージに表示されているように見えます。

esi 2が解析/インクルードされない理由は誰にも分かりますか?どんな助けでも大いに感謝されるでしょう!

答えて

1

明らかに、ESIタグは// [CDATA [ブロック。私はこれがXMLコンプライアンスと関係していると確信しています。私はesi_syntax = 7に設定するとこのような問題を防ぐことができると思っていましたが、それはESI自体の内容にのみ影響します(含まれているコードの安全チェックを持ち上げません)。

解決策は、ESIが独自のスクリプトタグであるようにアプリケーションを修正することです。

1

クエリ文字列の "&"の前にバックスラッシュを追加してみてください。

少なくともワニスは、すべてのパラメータを無視しますが、実行しない場合は最初のパラメータを無視します。

例えば:

はたぶん、あなたは「[」と「]」に問題があるでしょうし、彼らはまた、バックスラッシュが必要になります。

関連する問題