Spec-Zone.ru › Varnish

Игнорирование заголовка Vary для ботов

Varnish поддерживает HTTP-варианты из коробки, но заголовок Vary несколько ограничен, так как он работает с полными значениями заголовков. Если вы хотите, например, провести кампанию A/B-тестирования или выполнить развертывание синего/зелёного, вы можете заставить клиентов «запомнить» свой путь с помощью cookie первого уровня.

Однако, когда бот поисковой системы запрашивает содержимое, есть большая вероятность, что он не обрабатывает cookie, и, скорее всего, вы предпочтёте быстро предоставить ответ. В этом случае, вероятно, вы не захотите даже пытаться присвоить клиенту категорию, но в таком случае создаёте новый вариант в кэше, который не относится ни к A, ни к B, ни к синему, ни к зелёному, ни к чему-либо ещё, что предоставляет ваш бэкенд.

Если способ предоставления содержимого не имеет значения для бота, потому что вы изменили цвет кнопки или что-то ещё, ортогональное самому содержимому, то вы рискуете промахом кэша с вредными последствиями добавления ненужного варианта в кэш и его предоставления с дополнительной задержкой.

Если задержка имеет первостепенное значение, вы можете использовать req.hash_ignore_vary для отказа от соответствия Vary во время поиска и получения самого свежего варианта.

Игнорируя способ установки cookie и предполагая, что бэкенд всегда предоставляет точный заголовок Cache-Control, даже когда cookie присутствуют, ниже приведён пример настройки A/B-тестирования, где ботам предоставляется самый свежий вариант:

import cookie;

include "devicedetect.vcl";

sub vcl_recv {
    call devicedetect;
    if (req.http.X-UA-Device ~ "bot") {
        set req.hash_ignore_vary = true;
    }
}

sub vcl_req_cookie {
    cookie.parse(req.http.Cookie);
    set req.http.X-AB-Test = cookie.get("ab-test");
    return;
}

sub vcl_deliver {
    unset resp.http.Vary;
}

Также предполагается, что бэкенд отвечает с заголовком Vary: X-AB-Test и не изменяет другие заголовки.

Copyright © 2006 Verdens Gang AS
Copyright © 2006–2020 Varnish Software AS
Licensed under the BSD-2-Clause License.
https://varnish-cache.org/docs/7.4/vcl-design-patterns/req-hash_ignore_vary.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API