Расходы на пропускную способность изображений S3 начинают раздражать

Я заметил, что расходы на трафик (передачу данных) нашего S3-сервиса для изображений постоянно растут. Тариф составляет $0,09 за ГБ, и сумма быстро накапливается. Думаю, я не единственный, кто сталкивается с этой проблемой? Сейчас я плачу Amazon $70 в месяц только за передачу данных — это больше, чем стоимость моей виртуальной машины. Стоимость хранения в S3 составляет всего $5 в месяц; вся проблема именно в плате за передачу.

У меня не настроено ни CDN, ни кэширование — просто стандартный Discourse, работающий на виртуальной машине Linode с использованием S3-бакетов для изображений. Что делают более крупные сайты с большим количеством изображений? Используют CDN (думаю, это снизит расходы)? Или переходят на Digital Ocean Spaces или Minio? Может быть, я что-то упускаю?

Использование CDN для S3 — правильный подход. Это значительно снизит затраты на передачу данных.

Если у вас ограниченный бюджет, вы можете использовать поддомен Cloudflare для этих целей.

Хм… посмотрев на расходы на пропускную способность у Fastly и Amazon CloudFront (и других), я вижу, что они практически такие же, как и мои текущие 0,09 $/ГБ :frowning:

Кажется, Cloudflare не взимает плату за пропускную способность?? Возможно, стоит попробовать именно их. Есть ли пост о том, как подключить Cloudflare для CDN изображений S3 в Discourse? Я вижу параметр s3_cdn_url, но не могу найти инструкций по его использованию (кроме того, что после настройки нужно будет пересобрать образы). Изучая Cloudflare, я понял, что, похоже, нужен свой домен, так как требуется изменить настройки DNS… значит, мне придётся создать CNAME, например s3-cloudflare.mydomain.com, который будет указывать на IP-адрес моего S3-бакета, настроить Cloudflare для обработки этого URL, установить s3_cdn_url в это значение, а затем пересобрать образы?

Вот страница поддержки Cloudflare, где, кажется, говорится, что это может сработать:

https://support.cloudflare.com/hc/en-us/articles/360013791312-Fetching-object-storage-assets-through-the-Cloudflare-CDN-using-a-Cloudflare-Worker

Кто-нибудь уже пробовал это? Я немного удивлён, что таких сайтов не так много, ведь для меня это как минимум удваивает ежемесячные расходы.

Я использую Cloudflare на своём сайте Discourse, и всё работает отлично. По сути, вы направляете весь свой трафик через Cloudflare и указываете, что нужно обрабатывать или кэшировать — и всё. Однако есть несколько моментов, которые стоит иметь в виду:

  1. Настройте Cloudflare так, чтобы он НЕ кэшировал ничего (настройте исключения с помощью правил страниц, см. ниже).
  2. Не позволяйте Cloudflare вмешиваться в ваш JavaScript — в частности, отключите Rocket Loader.
  3. Я пока не уверен насчёт сжатия Brotli, поэтому отключил его.
  4. Настройте правила страниц для кэширования директорий с аватарами и загрузками, как показано ниже (игнорируйте правило №1, оно специфично для сайта).

Cloudflare в настоящее время кэширует для меня чуть более 3 ТБ данных в месяц и довольно быстро отдаёт большие графические файлы.

Если вас больше интересует CDN, я также могу порекомендовать https://www.belugacdn.com/ (я не аффилирован с ними). Я использую их на крупной платформе WordPress, и производительность хорошая, при этом стоимость составляет лишь часть от расходов на некоторые другие CDN-платформы, которые я рассматривал (возможно, те ещё быстрее, но Beluga полностью удовлетворяет мои потребности).

В конце концов вы перешли с Amazon CloudFront, @scottfsmith?

Я оказываюсь в похожей ситуации из-за растущих расходов.

CloudFront для меня относительно новое решение. Последние несколько лет я использовал только бакет S3, но по рекомендациям отсюда я настроил CloudFront в прошлом месяце.

Всё это лишь перенесло расходы с передачи данных S3 на передачу данных CloudFront, а общий ежемесячный счёт остался прежним.

Я подхожу к уровню ежемесячных расходов на передачу данных, который становится unsustainable.

Я в той же лодке. Я тоже недавно перешёл на CloudFront, и расходы выглядят схоже. Я думал, что из-за локального кэширования будет какая-то экономия, то есть пропускная способность будет меньше, если одно и то же изображение многократно загружается из одного географического региона, но пока что похоже, что это не так.

Кажется, должен существовать какой-то другой CDN, который мог бы заменить CloudFront. Всё, что делает Discourse, — это переписывает URL-адреса изображений, так что это довольно универсально (похоже на то). Возможно, Cloudflare можно использовать только для изображений.

Это было точно моё понимание тоже.

+98% нашего трафика приходится на Великобританию, и естественно, 98% нашего исходящего трафика S3 через CloudFront также направляется в Великобританию.

На данный момент я не вижу никакой выгоды от использования CDN. Если бы наш трафик был по всему миру, возможно, я бы увидел что-то другое.

В ближайшие дни я прочитаю о Cloudflare (как эти две компании смогли избежать таких похожих названий!) и посмотрю, смогу ли я найти какую-либо выгоду.

Спасибо :+1:t2:

Пожалуйста, отпишитесь здесь, если обнаружите что-либо. Я тоже собирался заняться этим вопросом.

@Richie и @scottfsmith,

Существуют фиксированные тарифы на CDN, например https://www.stackpath.com/ за $10, который я использовал для тестирования использования объектного хранилища для загрузки файлов (S3 и аналоги). Они могут подойти вашему сообществу лучше.

Stackpath CDN стоит 20 долларов в месяц с лимитом 1 ТБ, и во многие месяцы я превышаю этот лимит. Затем цена повышается до 200 долларов в месяц за лимит 20 ТБ, что больше, чем около 100 долларов в месяц, которые я плачу Amazon.

Возможно, в этом списке есть другой провайдер, который лучше, спасибо за напоминание о списке.

Imgur бесплатен для всех, но для этого нет плагина

Tobey Maguire Reaction GIF

Что бы делал такой плагин? Он просто не загружал бы плагины для Imgur или работал бы как текущая система, загружая все изображения на Imgur через какой-то API-интерфейс, который, предположительно, существует?

Какова его ценность для вас? Сомневаюсь, что это имеет смысл для бизнес-модели CDCK, поскольку их платный хостинг делает Discourse доступным для всех нас, и их хостинг работает отлично и без плагина для Imgur.

Может, кто-нибудь подтвердит, что этот конфиг хорошо работает в 2022 году или нет? :slight_smile:

Да, мы всё ещё используем настройку Cloudflare.

Спасибо за подтверждение.

Верно, что используемая вами настройка не является кэшированием на уровне страницы?

Или есть какие-то особые преимущества использования CDN Cloudflare по сравнению с другими?

Нет, мы кэшируем только директории uploads и avatars; см. наши правила выше. Если вы попытаетесь настроить что-то ещё, вы, скорее всего, нарушите работу Discourse.

Это бесплатно :slight_smile:

А как насчёт статических ресурсов, таких как JS и CSS?

Если мы используем CDN согласно этой инструкции, то оно будет отдавать и статические ресурсы, а также загрузки и аватары (если я правильно помню).

Тогда почему Discourse может сломаться, если мы будем отдавать все статические ресурсы через Cloudflare?

Я не помню, прошло несколько лет. Почему бы не попробовать и не сообщить о результатах?

Пока эта ветка снова активна, я должен добавить .. похоже, что Amazon CloudFront значительно снизил цены. Я не знаю, что именно они сделали, но мои средние расходы на AWS упали с примерно 80 долларов в месяц до 15 долларов в месяц. Это касается как S3, так и CloudFront только для изображений на сайте с очень большим количеством картинок.

Cloudflare работает отлично — просто отключите их функцию Rocket Loader.

Без каких-либо настроек это экономит половину трафика, идущего обратно на мой сервер.

Возможно, несколько лет назад Cloudflare плохо работал с Discourse, но сегодня это уже не так. Было бы неплохо, если бы мы перестали видеть сомнения на этот счёт. Если у кого-то есть конкретная проблема, им следует создать тему поддержки здесь, описав, что именно не работает.