Как заставить объекты потокового изображения кэшироваться с помощью Squid Forward Proxy
Я получаю доступ к изображениям, хранящимся в хранилище, например AWS S3 или GCS.
Я использую библиотеку узлов Got для получения изображения и передаю ответ в процессор изображений.
Я использую Got с туннельным агентом, чтобы он использовал мой прокси-сервер Squid Forward. Я использую Squid, так как хочу кэшировать изображения, чтобы мне не всегда приходилось обращаться к S3 для получения изображения.
Однако мои изображения не кэшируются. И каждый вызов получения изображения через Squid приводит к следующему сообщению журнала:
1612789358.530 3100 172.22.0.3 TCP_TUNNEL/200 2296639 CONNECT storage.googleapis.com:80 - HIER_DIRECT/172.217.170.80 -
Я добавилrefresh_pattern
директива для принудительного кэширования.
refresh_pattern . 0 100% 525600 override-expire override-lastmod ignore-reload ignore-no-cache ignore-no-store reload-into-ims ignore-must-revalidate
Это должно кэшировать все на год.
Соответствующий javascript таков (если это имеет значение)
let stream = await got.stream(sourceUrl, {
agent: {
http: tunnel.httpOverHttp({
proxy: {
host: "localhost",
port: "3128",
},
}),
},
});
У меня нет опыта работы с Squid — я использую версию 4.x.
Может ли быть так, что, поскольку я передаю ответы от S3, Squid не может кэшировать ответ после потоковой передачи всего ответа изображения? Или в моем файле squid.conf может быть необходима определенная директива кэша.