5月 152011
 

3.0beta1では結構VCLの記法が変更されています。
追加要素はまた別記事で書こうと思いますが下位互換性のない変更が結構ありますので纏めてみました。

一応網羅してるんじゃないかと思うのですが抜けがあったら教えてもらえるとありがたいです。

ESI処理を行う際の指定方法

今まではesi;でしたがberesp.do_esi=true;に変わりました。

2.1.X


sub vcl_fetch {
    if (req.url == "/test.html") {
       esi; /* ESI処理を行う               */
       set obj.ttl = 24 h;       /* キャッシュ保持時間を設定(24時間)  */
    } elseif (req.url == "/cgi-bin/date.cgi") {
       set obj.ttl = 1m;         /* includeするHTMLのキャッシュ保持時間を設定(1分)        */
    }
}

3.0


sub vcl_fetch {
    if (req.url == "/test.html") {
       set beresp.do_esi = true; /* ESI処理を行う               */
       set obj.ttl = 24 h;       /* キャッシュ保持時間を設定(24時間)  */
    } elseif (req.url == "/cgi-bin/date.cgi") {
       set obj.ttl = 1m;         /* includeするHTMLのキャッシュ保持時間を設定(1分)        */
    }
}

obj.cacheable,beresp.cacheableが廃止されました

キャッシュ可能かの判定はberesp.ttlとberesp.graceでのみ判定されます。

vcl_fetch内でのreturn(pass)がreturn(hit_for_pass)に変更されました

vcl_recvとvcl_fetchのpass動作が厳密には違うため名前を変更されました。
vcl_recvの方は変わってません。

2.1.X


sub vcl_fetch {
 return(pass);
}

3.0


sub vcl_fetch {
 return(hit_for_pass);
}

hashの指定の仕方が変わりました

hash_data(value)に変わりました。

2.1.X


req.hash += value;

3.0


hash_data(value);

文字列の結合の仕方が変わりました

結合に+を利用するようになりました。

2.1.X


req.url"AAA"

3.0


req.url+"AAA"

logメソッドがデフォルトで使えなくなりました

Varnish Module(VMOD)のstdを利用する必要があります。

2.1.X


sub vcl_recv{
 log req.url;
}

3.0


import std;
sub vcl_recv{
 std.log(req.url);
}

文字列中の%による文字列エスケープを解釈しなくなりました

2.1.X


入力
log "AAABBB:%67%67%67%67%67%67%67%67";
出力
13 VCL_Log      c AAABBB:gggggggg

3.0


入力
std.log("AAABBB:%67%67%67%67%67%67%67%67");
出力
12 VCL_Log      c AAABBB:%67%67%67%67%67%67%67%67

purge()がban()になりました

2.1.X


purge("req.http.host == " req.http.host
                      "&& req.url == " req.url);

3.0


ban("req.http.host == " + req.http.host +
                      "&& req.url == "+ req.url);


さすがメジャーバージョンアップというべきか結構変わってますね・・・


 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください