これだけで有効になります。
そしてコンテンツ側の記述ですが以下のように記述します。
<esi:include src=”path” />
指定したパスを展開します。
/index.html
<html>
<body>
↓<br />
<esi:include src=”/esi/1.html” />
↑<br />
</body>
</html>
/esi/1.html
Hello ESI!<br />
上記を実際にみると
<html>
<body>
↓<br />
Hello ESI!<br />
↑<br />
</body>
</html>
と返却されます。
<esi:remove>~</esi:remove>
ESI 実行時に削除される範囲です。タグで囲まれた範囲を削除します。
つまり ESI が有効でない場合にそのまま表示されます。<esi:XXXX>といった記
述は特に HTML の表示に悪影響はないので一時的に ESI を止めてる時にメッセージ
を出すときに利用します。
記述
→<esi:remove>hoge</esi:remove>←
ESI 有効時
→←
ESI 無効時
→<esi:remove>hoge</esi:remove>←
45
<!--esi ~ -->
ESI 処理が行われた際に表示される項目です。無効時はコメントのままです。
記述
→<!--esi hoge -->←
ESI 有効時
→ hoge ←
ESI 無効時
→<!--esi hoge -->←
ESI の規格では他のタグも存在するのですが Varnish がサポートしているのは以上
の記述のみです。
また、ESI 利用時の注意事項について説明します。
デフォルトでは HTML/XML タグ形式ではないと解釈されない
include の例できちんと<HTML>~と記述しましたが例えば内容を include のみ
にした場合は動作しません。どうしても動作させたい場合は起動パラメータで設定を
行います
-p esi_syntax=0x00000001
このオプションを指定するとタグが存在しなくても ESI の構文を探します。
ネストするページで<html>や<body>を出力するとそのまま出力される
ESI では特に中身について変更を行わず単純に埋込みを行います。つまり include
元と先で両方共<html>や<body>タグがあると両方共出力されてしまいます。
ネスト数は制限がある
ESI した先でさらに include の記述があってもネストすることはできますが
デフォルトでは最大ネスト数は5です。変更したい場合は起動パラメータで以下の
ように指定します。
-p max_esi_depth [最大ネスト数]
なおネスト制限に引っかかって展開されない場合でも include はそのまま残るわけ
ではなく削除されます。
ページの ESI 化を行う際は再起動かページの ban を行うのが望ましい
詳しくは gzip で解説しますが、Varnish が ESI のタグを解釈するのは fetch した
時なので既にキャッシュされている場合はキャッシュが消えるまではそのオブジェク
トを ESI せずにそのまま返却します。
46