purge

Igor Sysoev igor на sysoev.ru
Пт Июл 30 10:47:28 MSD 2010


On Fri, Jul 30, 2010 at 01:52:45AM +0400, Михаил Монашёв wrote:

> Здравствуйте, Игорь.
> 
> 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 приходится.

Тут управляет именно бэкенд: он устанавливает зависимости.


-- 
Игорь Сысоев
http://sysoev.ru



Подробная информация о списке рассылки nginx-ru