Re: Идеи про proxy_cache_min_uses.

Pavel V. pavel2000 at ngs.ru
Sun Jan 20 08:02:40 UTC 2013


Здравствуйте, Михаил.

Вы писали 20 января 2013 г., 5:13:12:

> Здравствуйте.

> Есть  прекрасная директива proxy_cache_min_uses . Она позволяет сильно
> экономить  на  дисковой нагрузке, которую создают записывающиеся в кэш
> файлы, к которым делается всего один запрос и которые потом вымываются
> из кэша .

> Было бы здорово развить идею и сэкономить ещё.

> Например, proxy_cache_min_uses=2. Приходит запрос к кэшу, в кэше файла
> нет,  и  это  первое обращение к файлу. Т.е. мы должны сначала скачать
> файл  с  хранилища,  а  потом только отдать его в инет. И при этом сам
> файл  в  кэш  не  положится.  Т.е.  кэширующий  сервер просто ненужный
> посредник  между  браузером  и  хранилищем  файлов.  Было  бы возможно
> оптимальнее  кэширующему  серверу  выдать  вместо  файла,  взятого  из
> хранилища,   временный  редирект  на  хранилище.  Т.е.  отдавать  файл
> напрямую  с  хранилища,  если  он  не  будет  класться в кэш. При этом
> экономится и трафик и ресурсы кэширующего сервера.

> Возможно подобное можно сделать уже сейчас, только я не знаю как.

На мой взгляд, это возможно сделать уже сейчас как-то так (Idea only):

Запрос приходит в локейшн, где уже прописано кеширование.
Если в кеше есть ответ на запрос, то отдается ответ.

Но проксирование запроса в этом локейшне настроено не на хранилище, а на "маршрутизирующий скрипт",
и если в кеше ответа нет, то запрос улетает на "маршрутизирующий скрипт", который обсчитывает
количество обращений, знает на каком хранилище лежит требуемый файл и тд

В скрипте делаем проверки. Если количество обращений не достигло порога - отдаем временный редирект.
Если достигло - отдаем X-Accel-Redirect на проксирование запроса на хранилище.
Единственное, что потребуется - описать в локейшне, на который отправит
X-Accel-Redirect, те же самые настройки кеширования, что и в основном локейшне, чтобы при повторном
запросе данные отдались из кеша Nginx.

Возможно это же можно реализовать на встроенном perl..

Всё это только теоретическая идея по возможной реализации, ничего не проверялось.

-- 
С уважением,
 Pavel                          mailto:pavel2000 at ngs.ru



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