varnish отправляет код 200 вместо 304 При использовании слабого валидатора ETag \W
Primary tabs
Близкая проблема на трекере: https://varnish-cache.org/trac/ticket/1816
Currently when the client sends a request with weak ETag and it matches, Varnish returns response with 200 status code on cache hit.
But it should actually return 304 just like with strong ETag.
Эксперимент с выключением \W
Запрос вида:
curl -I 'http://dev.cartimes.ru' -H 'If-None-Match: "20e208217929cc010a4a7f7467d3e681"'
вернёт код 304
А запрос вида
curl -I 'http://dev.cartimes.ru' -H 'If-None-Match: W/"20e208217929cc010a4a7f7467d3e681"'
вернёт уже 200.
Идея отсюда: https://github.com/phalt/swapi/issues/92
Но проблема в том, что клиент (браузер) всегда будет подставлять в If-None-Match, то что пришло в ETag, т.е. в случае нашей проблемы это будет значение с \W.
Следует отметить, что проблема наблюдается именно в nginx.
- vedro-compota's blog
- Log in to post comments
- 4954 reads