У меня есть приложение, где пользовательские фотографии являются частными. Я храню фотографии (также миниатюры) в AWS s3. На сайте есть страница, на которой пользователь может просматривать свои фотографии (например, миниатюры). Теперь моя проблема в том, как я могу обслуживать эти файлы. Некоторые параметры, которые я оценил, следующие:
- Работа с файлами с CloudFront (или AWS) с использованием подписанного поколения URL-адресов. Но проблема в том, что каждый раз, когда пользователь обновляет страницу, я должен снова создать так много подписанных URL-адресов и загрузить их. Поэтому я не смогу кэшировать изображения в браузере, что было бы хорошим выбором. Есть все равно, чтобы сделать все еще в javascript? Я не могу иметь верность этих URL-адресов дольше из-за проблем с безопасностью. И во-вторых, в течение этого периода времени, если кто-то завладел этим URL-адресом, он может просмотреть файл без проверки подлинности из приложения.
- Другой вариант - передать файл из моего экспресс-приложения после его потоковой передачи с серверов S3. Это позволяет мне иметь HTTP-заголовки кэша, поэтому включить кеширование браузера. Он также гарантирует, что никто не может просматривать файл без проверки подлинности. В идеале я хотел бы передать файл, и я хостинг, используя NGINX-прокси-ретранслятор, передающий другую сторону в NGINX. Но, как я вижу, это возможно только в том случае, если файл существует в тех же системных файлах. Но здесь я должен передать его и вернуться, когда я получу поток. Не хотите хранить файлы локально.
Я не могу оценить, какой из двух вариантов будет лучшим выбором? Я хочу перенаправить как можно большую работу на S3 или облачную область, но даже с использованием поддельных URL-адресов также делает запрос первым на моих серверах. Я также хочу использовать функции кэширования.
Итак, что было бы идеальным способом? с ответами на конкретные вопросы, относящиеся к этим методам?