| 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 г., 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@xxxxxx
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru 
 |