Что значит «файловое хранилище CDN»
Большинство CDN работают в режиме Pull: edge держит в памяти адрес вашего существующего origin-сервера и забирает (pull) контент с него по мере запросов посетителей. Это отлично работает, если у вас уже есть сайт. Но если вам нужно просто отдавать файлы — логотип, PDF, дистрибутив, видео, собранные ассеты приложения, — поднимать и поддерживать ради них origin-сервер избыточно.
Файловое хранилище CDN устроено наоборот. Вместо того чтобы направлять CDN на ваш сервер, вы храните файлы прямо на CDN и отдаёте их с edge. CDN сам является origin. Никакого сервера, который нужно запускать, патчить или масштабировать: вы загружаете файл, получаете URL, и каждый посетитель получает файл с ближайшей edge-точки по HTTPS. Именно это имеют в виду под «отдавать файлы с CDN» или «cdn origin storage» — CDN хранит файл и доставляет его.
Вариант A — загрузка из панели (без CLI)
Самый простой способ — прямо из панели cdn.com.tr. Откройте раздел Files своего аккаунта, загрузите нужные файлы и организуйте их по папкам, как в обычном файловом менеджере. Ничего устанавливать и настраивать не нужно — загруженное сразу попадает в хранилище CDN вашего аккаунта.
После загрузки файл отдаётся через CDN по своему URL, кешируется на edge и покрыт автоматическим SSL, поэтому ссылка сразу работает по HTTPS. Этот путь подходит, когда у вас всего несколько файлов, когда хочется видеть их и управлять ими визуально, или когда вы просто не из тех, кто живёт в терминале. Для массовых загрузок, повторяющихся шагов или автоматизации быстрее использовать CLI ниже.
Вариант B — cdnctl CLI (работает как scp)
cdnctl — это операторский инструмент командной строки для cdn.com.tr, и загрузка файлов через него ощущается как scp. Сначала один раз войдите и выберите аккаунт, чтобы каждая команда знала, куда класть файлы: выполните cdnctl login --email you@example.com --password ... (или cdnctl configure --endpoint https://cdn.com.tr --token <token>, если вы используете API-токен), затем cdnctl accounts use <account_uuid>, чтобы задать аккаунт по умолчанию. После этого команды, привязанные к аккаунту, просто работают.
Для загрузки используйте cp точно как в scp — сначала локальный путь, затем удалённый: cdnctl cp ./logo.png images/logo.png положит один файл по пути images/logo.png в вашем CDN-хранилище. Добавьте -r, чтобы отправить целую директорию: cdnctl cp -r ./dist assets/ загрузит каждый файл из ./dist в assets/. Передайте --force, чтобы перезаписать уже существующие файлы. Также можно указать конкретный аккаунт прямо в команде через account_uuid:remotepath, если аккаунт по умолчанию не задан.
Если вам удобнее явные подкоманды, группа files делает то же самое и печатает JSON, который можно разобрать в скриптах: cdnctl files put --file ./logo.png --target-path images/logo.png [--force] загружает файл, cdnctl files ls [--path <path>] выводит список того, что хранится, cdnctl files mkdir --path <path> создаёт папку, а cdnctl files rm --path <path> --yes удаляет объект. Это то же хранилище, что и в панели — просто управляемое из терминала.
Когда вместо этого использовать S3-совместимое object storage
Файловое хранилище — самый простой способ разместить и отдавать статические файлы и медиа через CDN. Когда нужно больше — buckets, access keys или программная загрузка через привычные S3-инструменты, — берите S3-совместимое object storage на базе Ceph RGW.
В cdnctl вы создаёте bucket командой cdnctl object-storage buckets create --account <uuid> --name <bucket>, выводите список командой cdnctl object-storage buckets list --account <uuid> и выпускаете S3 access и secret keys командой cdnctl object-storage access-keys create --bucket <bucket_uuid>. После этого любой S3-совместимый клиент или SDK может читать и писать в bucket. Bucket также можно привязать прямо к container app, чтобы он появился как переменные окружения — cdnctl object-storage bindings create ... --env-prefix S3, — это чистый способ дать приложению собственное хранилище. Правило простое: файловое хранилище — чтобы размещать и отдавать файлы через CDN; object storage — когда нужны buckets, keys, программный/S3-доступ или хранилище, стоящее за приложением.
Отдача, кеширование и purge
Файлы, которые вы храните на CDN, отдаются с edge и кешируются там, поэтому повторные запросы обслуживаются из точки рядом с посетителем, а не идут обратно к единственному origin. Каждый отдаваемый URL получает автоматический HTTPS, так что ваши ссылки защищены без ручного управления сертификатами.
Важный момент про кеширование на edge: когда вы перезаписываете файл новой версией, старая копия ещё какое-то время может отдаваться из кеша на edge. Если вы заменили файл и изменение должно появиться сразу, сделайте purge (из панели или через API), чтобы edge забрал свежую копию. Частый способ вообще обойти эту проблему — включать версию в имя файла или путь: logo.v2.png или ассеты под хешем сборки, — тогда у новой версии новый URL, и она никогда не пересекается с закешированной.
CI и автоматизация с cdnctl
Поскольку cdnctl — это единый инструмент командной строки, который аутентифицируется токеном, он аккуратно встраивается в CI/CD. Типичный шаг сборки один раз проходит аутентификацию (cdnctl configure --endpoint https://cdn.com.tr --token <token> и cdnctl accounts use <uuid>), а затем отправляет свежесобранные ассеты: cdnctl cp -r ./dist assets/ --force. Ваш пайплайн загружает артефакты, edge их отдаёт, и вручную копировать файлы больше не нужно.
Тот же подход подходит для публикации нового дистрибутива, ротации маркетингового ассета или выкладки собранного статического сайта при каждом коммите — всё скриптуется, всё повторяемо, и никакого origin-сервера поддерживать не нужно.
Что отдают с хранилища CDN
Размещайте логотипы, фото товаров, видео и аудио на CDN и отдавайте их быстро с edge — без media-сервера.
Кладите инсталляторы, PDF и файлы релизов в хранилище и раздавайте быстрые HTTPS-ссылки на скачивание, которые выдерживают нагрузку.
Отправляйте JS, CSS и изображения сборки из CI командой cdnctl cp -r и отдавайте весь статический бандл с edge.
FAQ по файловому хранилищу CDN
Нужен ли мне собственный сервер, чтобы отдавать файлы с CDN?
Нет. С файловым хранилищем CDN сам CDN и есть origin — вы загружаете файлы в свой аккаунт, и они отдаются с edge. Никакого origin-сервера, который нужно запускать, патчить или масштабировать, не требуется.
Как загружать файлы — через панель или командную строку?
Оба способа работают с одним и тем же хранилищем. Используйте раздел Files панели для визуальной загрузки без кода или cdnctl CLI, когда хотите автоматизировать процесс. cdnctl cp работает как scp: cdnctl cp ./logo.png images/logo.png для одного файла или cdnctl cp -r ./dist assets/ для целой папки.
В чём разница между файловым хранилищем и object storage?
Файловое хранилище — самый простой способ разместить и отдавать статические файлы и медиа через CDN. Object storage S3-совместимое: вы получаете buckets и access keys и можете пользоваться стандартными S3-инструментами или привязать bucket к приложению. Используйте файловое хранилище, чтобы отдавать файлы; object storage — когда нужны buckets, keys или программный доступ.
Я заменил файл, но всё ещё показывается старый — почему?
Отдаваемые файлы кешируются на edge, поэтому перезаписанный файл может отдавать старую копию, пока кеш не обновится. Сделайте purge файла после перезаписи или включайте версию в имя файла или путь, чтобы у новой версии был новый URL.
Ссылки на файлы отдаются по HTTPS?
Да. Файлы, отдаваемые через CDN, получают автоматический SSL, поэтому их URL всегда HTTPS и сертификат вам вручную настраивать не нужно.