私はvarnish+esiを使用して、RESTFulAPIから外部のjsonコンテンツを返しています。この手法により、リクエストごとにWebサーバーのリソースを使用せずに、リクエストを管理してデータを更新できます。
例えば:
<head>
....
<script>
var data = <esi:include src='apiurl/data'>;
</script>
...
インクルード後、esiワニスは次のように戻ります。
var data = {attr:1, attr2:'martin'};
これは正常に機能しますが、APIがエラーを返す場合、この手法は解析エラーを生成します。
var data = <html><head><script>...api js here...</script></head><body><h1 ... api html ....
隠しdivを使用してこの問題を解決し、エラーを解析してキャッチしました。
...
<b id=esi-data style=display:none;><esi:include src='apiurl/data'></b>
<script>
try{
var data = $.parseJSON($('#esi-data').html());
}catch{ alert('manage the error here');}
....
スクリプトタイプtext/esiも使用してみましたが、ブラウザはスクリプトタグ(wtf)内にhtmlをレンダリングします。例:
<script id=esi-data type='text/esi'><esi:include src='apiurl/data'></script>
質問:
タグをラップして、ブラウザがタグを解析しないようにする理由はありますか?