В нашем проекте мы решили использовать предопределенные URL-адреса в качестве основного механизма аутентификации.
Урезание нашей настройки включает в себя
- сервер хранения
- сервер API
- клиент (угловой SPA, запущенный в браузере)
Мы используем предопределенные URL для загрузки и выгрузки файлов с клиента непосредственно на сервер хранения.
Поток загрузки(упрощенно):
- клиент отправляет api: эй, я хочу загрузить это
- api выполняет авторизацию и проверку, выполняет некоторые операции с базой данных и возвращает предопределенный URL
- клиент загружает напрямую на сервер хранения
Пока все хорошо.Большая проблема заключается в потоке загрузки.
- клиент спрашивает API: эй, покажи мне список того, что у тебя есть
- API делает авторизацию, проверку и возвращает список jsonобъектов, которые также содержат предварительно назначенные URL-адреса получения для отображения файлов (изображений)
- , клиент отображает список данных объекта и встраивает изображения, загруженные непосредственно с сервера хранения, с использованием предварительно назначенных URL-адресов
Это прекрасно работает, но увеличивает кэш браузера до нескольких ГБ ОЗУ.
Это происходит потому, что предварительно назначенные URL-адреса, сгенерированные при многократных вызовах, не одинаковы и различаются в части авторизации (например, при сохранении нового свежего времени жизни) для каждого запроса.Когда пользователь нажимает вперед и назад по разбитому на страницы списку, клиент получит разные URL-адреса, а кеш браузера обрабатывает их как разные изображения.
Пока что это похоже на правильное поведение на стороне браузера (разные URL равны разному изображению).
Пока что это похоже на правильное поведение на стороне API (новый вызов вернет новое время жизни).
Есть ли какие-либо предполагаемые способыкак с этим справиться?
Являются ли потоки сами по себе неправильными?
Есть ли способы решения этой проблемы, кроме реализации централизованного предварительно назначенного URL-кэша при запуске нескольких экземпляров API?
Может кто-нибудь также может дать совет для значимых тегов, которые я мог бы использовать.