web-dev-qa-db-ja.com

ワニスキャッシュは領域を認識しません

Drupal 7のサイトにコンテンツが地理的な領域に分割されています。ページビューブロックとフィルターは、ユーザーのIPアドレスまたは国の選択、ページのURLは全体を通して同じです。DrupalキャッシュとVarnishキャッシュは、キャッシュが開始時とクリア時に最初にアクセスするときにキャッシュが構築されるため、リージョンごとに認識されないため、彼の前の誰かが別の地域から同じページを開いたため、自分の地域のコンテンツを表示したいユーザーに間違ったコンテンツが表示されます。

3
Steve Marsden

Varnishでキャッシュをリージョンごとに分離するための考えられる解決策は、GeoIP VMODを使用することです https://github.com/lampeh/libvmod-geoip

簡単な例:

国コードをハッシュする

sub vcl_hash {
        hash_data(req.url);

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

        # separate caches by countries
        hash_data(geoip.client_country_code());

        return (hash);
}

これで、国ごとのキャッシュは異なります。もちろん、Drupalでのページ生成については引き続き注意する必要があります。Drupalでは、リージョンごとに異なるコンテンツも提供されるはずです。

2
ghloogh