Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re[2]: purge
Здравствуйте, Игорь.
IS> Я пару лет назад планировал ленивую инвалидацию большого объёма
IS> ответов таким образом: в ответ добавляются заголовки с ключами в
IS> виде md5-хэшей:
IS> X-Accel-Depends: XXXXX...md5...XXXXXX YYYYY...md5...YYYYYY ...
IS> Ключи хранятся в той же зоне, что и мета-данные кэша.
IS> Если в запрашиваемом ответе есть такие ключи, то проверяется
IS> существование этих ключей. Если ключей нет, то ответ валидный.
IS> Если же есть и хотя бы один ключ моложе ответа, то ответ
IS> невалидный.
IS> Если же ключи есть, но старше ответа, то ответ валидный - он
IS> получен уже после получения инвалидирующих ключей.
IS> Инвалидирующие ключи получаются тоже в ответах
IS> X-Accel-Invalidate: XXXXX...md5...XXXXXX YYYYY...md5...YYYYYY ...
IS> Допустим, есть страница со списком каментов john'а и bill'а,
IS> у неё есть такие зависимости
IS> X-Accel-Depends: XXX...john...XXX YYY..bill...YYY
IS> Если теперь bill запостит камент, то в ответе будет
IS> X-Accel-Invalidate: YYY..bill...YYY
IS> nginx создаёт такой ключ в зоне и следующий запрос к списку
IS> обнаружит, что список уже невалиден.
Мне кажется, что подобной логике место в коде бэкенда. А
закэшированным данным - в мемкешеде ну или в кэше nginx-а, из которого
можно удалять через PURGE. А чтобы удалить несколько закэшированных
кусочков, пишется на libev либа, которая делает нужное количество
http-запросов параллельно. А ещё лучше, если веб-сервер позволит
делать мульти-запросы для PURGE, когда в одном запросе несколько
url-ов на удаление из кэша. Подобное ещё было бы полезно для веб-дава
сделать, а то порой досить nginx кучей DELETE приходится.
--
С уважением,
Михаил Монашёв
mailto:postmaster@xxxxxxxxxxxxx
ICQ# 166233339
http://michael.mindmix.ru/
Без бэкапа по жизни.
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://nginx.org/mailman/listinfo/nginx-ru
|