Я использую Nginx в качестве обратного прокси-сервера кеширования для больших файлов.
Для меня важно, чтобы исходный сервер не должен выдавать больше полосы пропускания, чем необходимо. Поэтому, если загрузка файла начинается с двух подключений, я не хочу, чтобы nginx загружал весь файл два раза.
Итак, я включил proxy_cache_lock
который работает для этого. Но тогда второй запрос должен дождаться завершения первого запроса, чтобы загрузить файл. Это может занять много времени, и я хочу, чтобы второй запрос начал загрузку сразу.
Итак, мне нужна система, в которой два запроса (которые будут запросами диапазона http) могут заполнять один и тот же файл кеша, и каждый запрос загружает свой диапазон только с исходного сервера.
Это имеет смысл только для больших файлов, и это то, для чего, похоже, предназначено большинство систем (varnish, nginx). Nginx в целом хорошо работает с большими файлами, но не в этой ситуации.
Есть ли система кэширования, которая могла бы удовлетворить мои потребности, или мне нужно написать свою собственную? Я думаю, что у некоторых CDN могут быть похожие требования.