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