[nginx] Cache: multiple variants of a resource now can be stored.

Ruslan Ermilov ru at nginx.com
Tue Oct 28 18:01:19 UTC 2014


On Mon, Oct 27, 2014 at 06:20:13PM +0000, Maxim Dounin wrote:
> details:   http://hg.nginx.org/nginx/rev/78c49e243848
> branches:  
> changeset: 5880:78c49e243848
> user:      Maxim Dounin <mdounin at mdounin.ru>
> date:      Mon Oct 27 21:14:10 2014 +0300
> description:
> Cache: multiple variants of a resource now can be stored.

Готовясь к ревью документации на эту тему, попытался
разобраться с темой не глядя в код, а только на коммит
лог.  Смог это сделать, только после объяснений Ромы.
Оставлю тут свои знания, вдруг они ещё кому-то пригодятся.

> If a variant stored can't be used to respond to a request, the variant
> hash is used as a secondary key.

Вот так лаконичненько описан основной алгоритм.  :)

"a variant stored" - это основной вариант в кэше, у которого
ключ кэширования не включает себя Vary-хэш.

"can't be used" - это значит что Vary-хэш запроса не совпал
с тем, что хранится в этом основном элементе.

Если это так, то составляется новый ключ с учётом уже Vary-хэш
и ищется новый элемент в кэше с этим ключом.

> Additionally, if we previously switched to a secondary key, while storing
> a response to cache we check if the variant hash still apply.  If not, we
> switch back to the original key, to handle cases when Vary changes.

Здесь я не понял про "if the variant hash still apply".
Это про случай, когда в кэше уже есть основной вариант,
нам он не подходит, других подходящих вариантов в кэше
тоже нет, проксируем запрос, решаем его закэшировать,
и выясняется что у него другое значение Vary.  В этом
случае основной элемент перезаписывается.



More information about the nginx-devel mailing list