2012-07-31 2 views
1

Я новичок в Varnish, и я изо всех сил пытаюсь понять, почему так много запросов либо miss, либо hit_for_pass.Отладка объектов hit_for_pass Varnish

Я добавил unset req.http.Cookie; внутри vcl_recv (если я прав) эффективно игнорировать все файлы cookie и кеш независимо от файлов cookie? Это правильно?

Но, несмотря на это, я все еще не получаю hits. Таким образом, этот метод cookie либо неправильный, либо существует совершенно другая причина, почему это не работает.

Любые идеи по этому вопросу, или есть способ точно увидеть, почему я получаю hit_for_pass или miss так часто.

Благодаря Jake

EDIT

Некоторые более Googling, и я нашел это

sub vcl_fetch { 
    unset beresp.http.set-cookie; 
} 

Так что я предполагаю, что это удаляет куки из объекта ответа, может кто-нибудь объяснить, почему это сейчас работает и что я сделал, чтобы заставить его работать?

EDIT2

Второй взгляд на varnishstat показывает, что это не работает, как я ожидал, и я все еще получаю много много промахов.

ответ

2

Скорее всего, если вы получаете много решений hit_for_pass, вы также очень мало в самом кэше, следовательно, промахи.

hit_for_pass только выбрано из метода vcl_fetch, так что стоит посмотреть, что возвращает ваш сервер. Вещи, которые следует рассмотреть:

  • remove beresp.http.Cache-Control; и remove beresp.http.Pragma; остановить приложения бэкэнд блокировать кэширование.

  • remove beresp.http.Expires;, чтобы избежать дат истечения срока действия (вы можете изменить это на далекое будущее, в зависимости от того, что вы обслуживаете).

  • Если ваше приложение не обслуживает файлы cookie, то remove beresp.http.Set-Cookie; окажет большое влияние на ваши ставки hit_for_pass.

  • Убедитесь, что вы устанавливаете соответствующее значение beresp.ttl.

Я также рекомендую вам прочитать this article about the 'Accept-Encoding' header (код в примере идет в методе vcl_recv).

+0

Спасибо Dan. Это помогло, и теперь я получаю хиты. Я действительно хочу понять, почему это сработало. Удаление 'Cache-Control' и' Pragma' имеет смысл, поскольку Varnish теперь делает кеширование, а заголовки кэша бэкэнда должны игнорироваться. Истекает, используется ли это в качестве лака, например. если это в прошлом, это повлияет на Лак, или если на следующей неделе Varnish проигнорирует его настройку ttl и вместо этого использует заголовок Expires? Наконец, удаление Set Cookie имеет смысл, мне просто нужно ifs для моего раздела '/ admin' –

+0

. Новый« наконец »здесь используется Cache-Control (https://www.varnish-cache.org/docs/3.0/tutorial/increasing_your_hitrate .html # cache-control), должен ли я фактически использовать мой backend для установки заголовков Cache-Control, может быть, в файле .htaccess и полагаться на эти данные для использования Varnish вместо написания нового сложного VCL? –

Смежные вопросы