Как проверить правильность работы лака?

Я использую Varnish Cache на веб-сайте Wordpress, который работает на Nginx. Он настроил способ, упомянутый в этом блоге. Он работает, но я не уверен, действительно ли он обслуживает контент из кеша.

Как точно знать? Может кто-нибудь, пожалуйста, проведет меня. Я новичок в кэше Varnish.

Ответ 1

Лак по умолчанию добавляет заголовки в ответ на любой запрос, который он обрабатывает. Вы можете посмотреть заголовки ответов, используя инструменты браузера, такие как Firebug, или инструменты CLI, такие как curl или GET. Здесь пример GET:

sudo apt-get install libwww-perl && GET -Used http://localhost:6081/index.html

Два заголовка для поиска - это X-Varnish and Age. X-Varnish будет содержать одно или два числа в нем, сами цифры не важны, но они относятся к запросам. Если запрос приводит к пропуску, лак извлекает страницу из бэкэнд, а заголовок X-Varnish в ответе содержит одно число для текущего запроса:

X-Varnish: 107856168

В следующий раз, когда запрашивается одна и та же страница, это может привести к удару. Если это так, Varnish извлекает страницу из кеша, а также добавляет номер из исходного запроса:

X-Varnish: 107856170 107856168

Заголовок заголовка говорит, сколько секунд осталось кешированной копии. С пропуском будет 0 и с ударом > 0.

Обратите внимание, что бэкэнд может установить возрастной заголовок, который делает его похожим на ложный хит, а уложенные лаки могут создавать ложные промахи в заголовке X-Varnish. Чтобы быть абсолютно уверенным, что при отладке вы можете добавить свой собственный заголовок в функции VCL hit and miss. См. Эту страницу для описания https://www.varnish-software.com/static/book/VCL_functions.html. Как новичок в Varnish, заголовок X-Varnish и Age, скорее всего, все, что вам нужно.

Ответ 2

Было бы неплохо добавить ваши собственные X-заголовки в разных точках вашего vcl, чтобы вы могли выполнять модульное тестирование на различных кодовых путях и условиях вашего vcl.

Например, в vcl_deliver:

sub vcl_deliver
{
    # Insert Diagnostic header to show Hit or Miss
    if (obj.hits > 0) {
        set resp.http.X-Cache = "HIT";
        set resp.http.X-Cache-Hits = obj.hits;
    }
    else {
        set resp.http.X-Cache = "MISS";
    }

    ...
}