ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Идеи про proxy_cache_min_uses.



Приветствую.

воскресенье, 20 января 2013 г. пользователь Pavel V. писал:
Здравствуйте, Михаил.

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

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

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

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

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

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

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

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

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

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

X-Accel-Redirect ничем не отличается от существующего поведения самого nginx, только.
 

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

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

--
С уважением,
 Pavel                          mailto:pavel2000@xxxxxx

_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.