Я хочу воспроизводить музыкальные файлы с Google Drive на веб-странице. У меня есть ссылка для каждого файла, но заголовки кэша ответов для вызовов: «без кэша, без хранения, max-age = 0, must-revalidate», поэтому он никогда не будет сохранен в кэше браузера. Есть ли способ добавить кеш к файлам запросов google drive?
Проблема:
При использовании ссылки на диск для музыкального файла (mp3) https://drive.google.com/a/pucp.pe/uc?id=1kYYS9FZ9Vxif5WJM9ZQcY4SR35NMgoIE&export=download вызов GET API получает код 302, который генерирует перенаправление на другой URL, в данном случае, на 'https://doc -0o-28-docs.googleusercontent.com/docs/securesc/bgp95l3eabkkpccn0qi0qopvc4e7d4mq/us95e8ush1v4b7vvijq1vj1d7ru4rlpo/1556330400000/01732506421897009934/01732506421897009934/1kYYS9FZ9Vxif5WJM9ZQcY4SR35NMgoIE?h=14771753379018855219&e=download. Каждый из этих вызовов имеет no-cache
в заголовках.
Я пытался использовать рабочий ящик (API кеша), но я не нашел способа кешировать перенаправления, возможно, мне нужно кешировать оба вызова (первый GET и перенаправление). Однако, если я использую перенаправленный URL-адрес, кэширование работает, но у меня нет доступа к этому URL-адресу до тех пор, пока не будет сделан первый вызов.
Я пытался использовать прокси-сервер с сервера NodeJS
app.get("/test", (req, res) => {
try {
https.get(
URL,
function(response) {
res.writeHead(response.statusCode, {...response.headers,
"Cache-Control": "public, max-age=120",
"Expires": new Date(Date.now() + 120000).toUTCString() })
response.pipe(res);
}
);
} catch (e) {
console.log(e);
}
});
Я попытался использовать первый URL безуспешно.
Я попытался использовать URL-адрес перенаправления, но получил «Код состояния: 302 найдено»
Одним из решений может быть загрузка файла и подача его непосредственно с моего сервера, но я упущу смысл использования дискового хранилища. Я действительно хочу использовать Google Drive Storage и не дублировать все файлы на моем сервере.
Есть ли рекомендуемый способ кэширования для этого случая? возможно есть какая-то конфигурация диска google, которую я пропускаю. Или вы знаете другой подход, который я мог бы использовать в этом случае?