Re: принудительная очистка кеша

Maxim Dounin mdounin на mdounin.ru
Вс Май 29 22:31:29 MSD 2011


Hello!

On Sun, May 29, 2011 at 07:02:45PM +0400, Dmitry Morozovsky wrote:

> On Sun, 29 May 2011, Dmitry Morozovsky wrote:
> 
> DM> О, Дадо ;)
> DM> 
> DM> On Sun, 29 May 2011, Evgenii Davidov wrote:
> DM> 
> DM> ED> > > хочу включить кеширование на одном сайте
> DM> ED> > > но там при обновлении страниц бывает нужно срочно выдать новую,
> DM> ED> > > будет ли корректно стирать в этот момент (скриптом который создает новую страницу) кеш
> DM> ED> > > например через find /cache/ -type f -delete
> DM> ED> > > спасибо
> DM> ED> > 
> DM> ED> > Лучше  делать  ему  mv, а потом стирать. 
> DM> ED> 
> DM> ED> спасибо, сделал диск в памяти для этого -- стирает весьма быстро
> DM> 
> DM> Всё равно надо б сначала переименовывать, чтобы исключить race, и выдачу 
> DM> клиенту половины контента.
> 
> Если хочется зачистить всё, то примерно так:
> 
> mkdir -p /cache/.new
> apply -d 'mkdir -p /cache/.new/%1' `cd /cache && find . -type d`
> mkdir /cache/.old
> mv /cache/* /cache/.old
> mv /cache/.new/* /cache/
> rm -rf /cache/.old
> 
> Между двумя mv тут всё равно малый рейс есть, но он на выдачу клиенту не 
> повлияет.

"Я не спрашиваю, какую траву вы курите.  Скажите только, где вы её 
берёте." (c)

Вариант "find /cache/ -type f -delete" - годный, с точностью до 
возможного некорректного представления nginx'а о размере кеша.

Откуда ты откопал race в unlink(2) - я не понял.  При отдаче 
одного ответа там никакого race'а нет, а если пытаться таким 
образом исключить race при отдаче нескольких ресурсов (e.g.  
страница + картинки) - то проще сразу повесится, ибо атомарности 
тут быть не может всилу удалённости клиента.

Maxim Dounin



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