Hello! On Fri, Jan 03, 2014 at 05:37:53PM -0500, S.A.N wrote:
> > Если вы хотите, чтобы оно работало так, то надо включить в ключ > > кеширования заголовок If-None-Match - т.к. от него зависит ответ > > бекенда. > > Нет, так делать не надо, потому что на один uri может быть только один > актуальный ETag, новые значения ETag означают обязательную инвалидацию всех > предыдущих значений ETag для этого uri, т.е если мы ETag добавим в ключ > кеша, только один ключ будет актуальным все остальные ключи по этому uri, > будут лежать как мусор потому что они не могут быть актуальными и их нельзя > отдавать клиенту, значит и смысла их хранить в кеше нет. Если от заголовка If-None-Match зависит ответ бекенда, то он должен быть в ключе кеширования - либо явно, либо неявно (e.g. через запрет кеширования ответов на запросы, где этот заголовок присутствует). Что до сопутствующих накладных расходов - то они есть повод задуматься о том, нужна ли вам такая схема работы. > Проблему с кешированием 304 статуса, мы решили ещё проще – бекенд теперь > проверяет значения If-Modified-Since, если оно пустое, ревалидация не > проводится, страница будет генерироватся полностью со статусом 200, даже > если хедер If-None-Match не пустой и является актуальным. > Это корректное условия для ревалидации клиентского кеширования и для > кеширования Nginx. Если значение If-Modified-Since не пустое из-за fastcgi_cache_revalidate - то заголовок If-None-Match у вас не имеет никакого отношения к тому, что, собственно, ревалидируется. И если отдать 304 на основании значения If-None-Match, то в кеше nginx'а будет оставлен потенциально устаревший ответ. Т.е. If-None-Match нужно просто убрать из рассмотрения при генерации ответа на бекенде, иначе корректной работы не добиться. Возвращаемся всё к тому же: либо добавлять в ключ кеширования, либо ответ бекенда не должн зависеть от If-None-Match. Собственно, последнее и происходит по умолчанию при использовании кеширования - заголовок If-None-Match из запроса к бекенду убирается. -- Maxim Dounin http://nginx.org/ _______________________________________________ nginx-ru mailing list [email protected] http://mailman.nginx.org/mailman/listinfo/nginx-ru
