[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