2017-01-12 19 views
1

誰かが次のvclコードについて説明することができますか?hash_data vcl_hashの機能は何ですか?

sub vcl_hash { 
    hash_data(req.url); 

    if (req.http.host) { 
     hash_data(req.http.host); 
    } else { 
     hash_data(server.ip); 
    } 

    if (req.http.Cookie) { 
     hash_data(req.http.Cookie); 
    } 
} 

キャッシュキーとしてhash_data関数を使用している私のreq.urlのハッシュについてのみ理解しています。それ以外のコードは私にとってはあいまいです。

助けてください。 Thnx。

答えて

2

hash_dataメソッドは、キャッシュされたオブジェクトのハッシュ、つまりキーを設定するために使用されます。このキーは、オブジェクトを既にキャッシュにあるオブジェクトと比較するために使用されます。

投稿するコードで、ハッシュとみなされる最初のものは、要求されたページのURL:req.urlです。

しかし、ワニスが、それはあまりにも曖昧になるとwww.example.com/test_urlwww.example2などの異なるサイトに配信される同じキャッシュにつながる可能性があるオブジェクトをハッシュするだけでURLを使用する場合ことに注意してください。 co.jp/test_url

この問題を回避するため、存在する場合はホスト(req.http.host)を追加し、そうでない場合は、http://192.168.0.1/test_urlのようにIP(server.ip)を追加します。

最後に、Cookieが存在するかどうかを確認し、ハッシュにも追加します。これは、ページがCookieに基づいて異なるコンテンツを表示する場合に実行されます。

+0

コメントの第3段落にあります。別の場所に単一のニスを使用することは可能ですか? –

+1

確かなニスはリバースプロキシであり、要求を受け取り、それらを異なるサーバー/サイトにディスパッチします。 –

+1

@JohnRocaは、Benjaminが述べたように、質問の構成はすでに別のサイトで準備ができています。 – alejdg

関連する問題