Здравствуйте.
Столкнулся со следующей проблемой.
Нужно хранить и отдавать статику для фронтенда с учетом того, что фронтенд - отдельная машина.
Если хранить статику на сервере фронтенда, то проблемы нет,
но то это означает что придется дорабатывать бекенд (который на отдельной
машине) так чтобы контент редакторы могли управлять статикой (картинки и документы) на внешнем
сервере фронтенда.
Может существуют какие либо элегантные решения?
Фронт на реакте(использую Create React App)
Посоветуйте решения, сразу скажу, что первый раз с этим сталкиваюсь.
Спасибо
Элегантное решение - хранить статику в Object storage: AWS S3, Azure Blob, GCP Cloud Storage, Yandex Object Storage, .... их много. Если хочется на своих серверах то выделите отдельное хранилище
НО, тут полностью от отдачи статики бэкэндом при этом не избавиться.
Но при кешировании на длительное время можно существенно снизить
количество обращений к бэкэнду.
Если юзать nginx, то можно доставить nginx на бэкэнд.
Срок хранения кеша можно выставить очень большим,
а когда необходимо будет обновить кеш - это бекенд
сможет сделать самостоятельно в любой момент,
с помощью директивы proxy_cache_bypass:
HellishCode, это можно применять к чему угодно. Ваша же задача в изоляции статики, а не раздачи ее. Раздавать и кэшировать можно чем угодно. У вас есть две сейчас две зоны влияния - фронт и бэк и у них есть общий контент, что нормально. Но когда у двух частей приложения есть shared storage его срочно надо выносить из приложения. Простая и действенная рекомендация
Иван Шумов, благодарю Вас за ответ. Собираюсь использовать Гугл Клауд, может порекомендуете статью или какой-то материал почитать(чайник в этом) , где выносят именно фронт статику ?
HellishCode, мануалов по миграции примерно нисколько по тому что все проекты уникальны. Я не очень жалую GCP - это самое слабое зарубежное облако из лидеров и там из хорошего только Firebase. В любом случае стоит искать какие-то курсы в сети чтобы сначала хотябы узнать как вообще устроено выбранное облако
Если нужно, чтобы в админке редакторы загружали картинки, а они отдавались с другого сервера - нужно сразу их загружать туда. Можно на бэкенде просто примонтировать диск фронтенда и туда складывать картинки. Монтирование можно настроить при запуске сервера. В итоге, бэкенд править не придется и картинки будут на сервере фронтенда.
Не знаю, насколько элегантно, но это быстро и в принципе надежно.