****SPAM(5.1)**** Re: Кеширование динамического контента

Andrew Velikoredchanin andy at atomail.com
Mon Feb 18 22:19:14 MSK 2008


Alexander Dolgarev пишет:
> Пусть есть 500 обращений к странице в минуту, контент на которой
> обновляется 2 раза в минуту (т.е. пусть кеш очищается каждые 30 сек),
> ответ на запрос генерируется 6 секунд (допустим, это некий онлайн).
> При кешировании могут возникнуть 2 неприятных момента:
> 1) если одновременно (т.е. в течении создания контента на один запрос
> - 6сек) приходят N запросов, в кеше еще ничего нет, тогда к бекенду
> будет сделано N запросов и страница N раз положена в кеш, здесь
> возникает вопрос: можно в этом случае предусмотреть в новой версии
> механизм, который позволит сделать 1 запрос, например, поставить в
> кеше метку на URL, что данный запрос обрабатывается, ждите его
> появление в кеше или т.п.
> 2) когда кеш очистится, то при поступлении нового запроса надо будет
> ждать 6 секунд, т.е. с точки зрения пользователя контент обновляется
> почти сразу, но 2 раза в минуту надо ждать по 6 секунд, можно ли
> как-то перед очисткой кеша за указанное количество секунд (жестко
> заданное или вычисляемое по статистике по предыдущим запросам)
> получать страничку и ложить ее в кеш, т.е. за 6 сек до очистки кеша
> посылается запрос, результат кладется в кеш, если ответ не успевает
> придти до очистки, то как в случае 1) ставим метку что данный запрос
> уже обрабатывается и новые запросы должны ждать появления ответа в
> кеше, а не отсылаться на сервер.

Возможно более оптимальным будет другой вариант. Вместо очистки кэша 
делать его обновление. Т.е. первый-же запрос по истечении времени 
хранения данных в кэше идет на бэкэнд, внутри nginx ставиться флаг на 
данный урл что он обновляется, а все последующие запросы в течении этих 
6-и секунд пусть берут данные из еще необновленного кэша. Когда 
отработает 6-и секундный запрос данные в кэше обновяться и дальше все 
будут брать уже новый вариант страницы.

С точки зрения скорости, мне кажеться, этот вариант намного лучше чем 
если будет висеть куча запросов и ждать ответа 6 секунд.

> Может, немного запоздало, но очень надо.
> 
> 2008/2/17 Andrew Velikoredchanin <andy at atomail.com>:
>> Igor Sysoev пишет:
>>> On Sat, Feb 16, 2008 at 05:13:01PM +0200, Alexander Dolgarev wrote:
>>>
>>>> Подскажите, кто что использовал для кешироания динамического контента?
>>> Я думаю, на следующей неделе выйдет 0.7.0 с поддержкой кэширования.
>>> Пока только для проксирования;
>> Самое интересное - будет-ли управляемая групповая очистка такого кэша?
>>
>>






More information about the nginx-ru mailing list