То есть файлы не будут синхронизироваться с моей системой, CloudFront просто их кэширует. Я прав?
Да, это верно. CDN получает с вашего сайта только те ресурсы, которые запрашиваются.
Discourse также отправляет в S3 статические ресурсы (например, CSS и JavaScript), а также загруженные файлы.
Возможно ли использовать правила Cloudflare для кэширования статических ресурсов, таких как CSS и JavaScript?
Да, мы используем его именно так, и это работает отлично. Только будьте очень внимательны и отключите любые оптимизации JavaScript. Нашу настройку можно посмотреть здесь:
Спасибо за ответ.
Я уже добавил второе и третье правило, но не понял первое. Для чего нужен редирект 301??
Вам это не нужно; это есть в описании.
Спасибо за ответ. А как насчёт статических ресурсов, таких как CSS и JavaScript? Возможно ли создать правило для CSS и JavaScript?
Я это не тестировал. Не уверен, что это сработает. Как минимум, вам придется очищать кэш Cloudflare после каждой пересборки.
Меня устраивает очистка кэша после каждой пересборки. Что ещё может пойти не так, если я установлю правило кэшировать всё в https://myforum.com/assets/? Отразится ли это каким-либо образом на входе пользователя в систему? Если вы дадите добро, я протестирую это в течение недели и отчитаюсь. У меня ещё есть одно неиспользованное правило.
Только для уточнения: верно ли, что мы не используем это поле (а также URL CDN), если используем CDN Cloudflare?
Я настроил cloudflare.template в app.yml согласно документации.
Требуется ли какая-либо дополнительная конфигурация при использовании Cloudflare?
Я успешно использовал StackPath в качестве CDN. Всё работает как ожидалось!
Актуально ли это и сейчас?
Из 2019 года:
Кажется, нам нужно быть особенно осторожными, и мы теряем часть преимуществ Cloudflare.
Из 2020 года:
Из 2021 года:
Так что, надежен ли и эффективен ли Cloudflare в связке с Discourse сегодня? Уменьшает ли отключение функции “Rocket Loader” её преимущества?
Я думал о переходе с Stackpath на Bunny CDN, но владелец домена моего форума и бывший администратор имеет корпоративный аккаунт Cloudflare (кстати, он владелец tinyURL), через который он может бесплатно добавить этот домен (Looking for a decrease in the forum fees in the future - #6 by Gilby - Forum Feedback - Unicyclist.com).
Так что я задаюсь вопросом, правильно ли, безболезненно и эффективно ли использовать Cloudflare вместо Bunny CDN.
Если ваш сайт насыщен изображениями, то увеличение объёма напрямую подключённых SSD-дисков обойдётся значительно дороже, чем эквивалентные расходы на S3.
Для экономичного использования S3 необходим CDN, так как вы платите за входящий и исходящий трафик, но даже с этим оно всё равно значительно дешевле, чем просто добавление дополнительных высокоскоростных SSD. CloudFlare может выступать в качестве фронтенда для S3, но надёжно использовать можно только функцию кэширования ресурсов. Размещение CloudFlare между клиентом и сервером приложения также увеличит количество переходов и приведёт к росту задержек приложения. Это не панацея.
У нас не слишком много изображений. Цель использования CDN — обеспечить быструю загрузку ресурсов для всех пользователей, поскольку наше сообщество международное (в основном США и Европа).
Мы используем S3, но только для хранения резервных копий.
Быстрый вопрос. Обязательна ли пересборка (rebake) после смены CDN? Или только если URL CDN отличается? Или она вообще не нужна?
edit: или можно просто заменить старые URL в обработанных постах на новые с помощью скрипта на Ruby on Rails?
Например, если у меня есть пост, содержащий:
<img class="ytp-thumbnail-image"
src="https://f5i4i8k5.stackpathcdn.com/uploads/default/original/3X/f/3/f3bc5ab19cc0394f33fd008e90ca06e081886a0b.jpeg"
title="Riding a unicycle part 76: Sullivan Canyon - Los Angeles"
width="480"
height="360"
loading="lazy"
style="aspect-ratio: 480 / 360;">
Могу ли я выполнить поиск и замену строк с f5i4i8k5.stackpathcdn.com на newcdn.unicyclist.com, не сломав ничего? Это выглядит безопасно, но я хочу быть уверенным в своих действиях.
Я не против пересобрать все свои посты, но проблема, с которой я столкнулся в первый раз, заключалась в том, что у меня тысячи встроенных видео с YouTube, и мой IP был заблокирован YouTube во время пересборки из-за слишком большого количества запросов к YouTube.
Поэтому, если есть безопасная альтернатива пересборке всех постов, чтобы избежать той же раздражающей проблемы, я бы предпочел выбрать альтернативу…
Существует задача rake, которая выполнит замену. Я считаю, что её запуск безопасен и является хорошей идеей. Замена строки во всех постах — это то, что вам нужно, на мой взгляд.
Привет, Джей,
Я не уверен насчет использования задачи rake.
URL-адреса CDN, похоже, содержатся в полях cooked, а не в полях raw (если только сообщение не было отправлено по электронной почте).
Насколько я понимаю, post:remap ищет строку только в поле raw.
Если замена URL-адресов CDN в обоих полях raw и cooked безопасна, полагаю, мне стоит написать собственный скрипт на Rails?
Вы правы. Есть ещё одна . . . вещь . . ., которая заменит строку во всех полях базы данных. Это именно то, что вы ищете. Извините, но я не могу найти её прямо сейчас. Есть несколько тем о переносе с одного S3, но, похоже, там нет howto.
Спасибо за эту подсказку!
Думаю, это оно?
DbHelper.remap('from', 'to')
Найдено на Rebaking old posts won't pull new S3 CDN URL after S3 bucket rename - #10 by Brad_Wood
И использовано здесь:
Если это безопасная альтернатива пересборке при смене CDN-сервиса, то гайд по этому поводу (howto) был бы действительно полезен.
О, здорово. Спасибо, что сообщили. Я думал, что вам будет достаточно найти это самостоятельно. Рад, что вы справились.