В Rails 5.2 Active Storage дает нам возможность генерировать постоянные URL , которые перенаправляют на ресурс, с помощью уникальных подписанных URL-адресов при каждом вызове.
HTML:
<img src='/rails/active_storage/blobs/ey...' />
Сервер:
Started GET "/rails/active_storage/blobs/eyJfcmFpbH...
302 Redirected to https://bucket.amazon/image.jpg?X-Amz-Algorithm=AWS4-HMA...
Меня интересует количество HTTP-запросов, которые Active Storage добавляет к монолиту, один blob_url на веб-странице = один дополнительный запрос к монолиту, чтобы получить окончательный URL-адрес ресурса с помощью перенаправления 302. Итак, одна страница с 20 изображениями => 20 дополнительных запросов. (но они довольно быстрые)
Итак, мой вопрос: зачем использовать эту систему вместо того, чтобы использовать окончательный URL-адрес напрямую (.service_url
):
<img src='https://bucket.amazon/image.jpg?X-Amz-Algo...'>
?
Я думаю об этих аргументах: (а есть ли другие?)
- blob_url может быть кэширован на стороне сервера, потому что он постоянный (пример: кэширование фрагмента )
- blob_url может быть защищен аутентификацией, это означает, что уникальный URL-адрес может быть предоставлен в общий доступ, но кому-то потребуется аутентификация, например, для просмотра ресурса (путем изменения контроллера BLOB-объектов rails)
- Может быть, третий? Лучшее кэширование на стороне браузера? Может ли браузер кэшировать данные изображения с помощью постоянного URL? даже если амазонка имеет 5-минутный срок действия?