4

Varnish 2.0.6を使用していますが、vcl_hash 関数を記述するための適切なドキュメントを見つけるのに苦労しています。

キャッシュする前に、API の URL からいくつかのパラメーターを削除する必要があります。特に、分析を追跡するために渡されるが、結果を変更するために渡されないユーザー ID。

URL: /api/browse?node=123&userid=3432432564363

私はこれを書きましたが、vcl_hash 関数が 'hash' または 'return(hash)' または NOTHING で終了する必要がある場合、およびすべてのケースまたは特殊なケースのみを処理する必要がある場合、それは私にとって明確ではありません。メソッドを上書きしているのか、それとも拡張しているのかは明確ではありません。

私は持っている:

sub vcl_hash {
  if (req.url ~ "^/api/browse") {
    set req.hash += regsuball(req.url,"&userid=([A-z0-9]+)","");
  } 
  hash;
}

それは何かが欠けていますか?

4

2 に答える 2

1

私はいくつかのことをテストしましたが、これはうまくいくようです:

sub vcl_hash {
  if (req.url ~ "^/api/browse") {
    set req.hash += regsuball(req.url,"&userid=([A-z0-9]+)","");
  } else {
    set req.hash += req.url;
  }
  set req.hash += req.http.host;
  hash;
}

したがって、vcl_hash を書き換える際には、デフォルトのケースも処理する必要があるようです。

于 2011-12-14T02:58:35.750 に答える