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 <mdou...@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. В этом случае основной элемент перезаписывается. _______________________________________________ nginx-devel mailing list nginx-devel@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-devel