Правильно ли я понимаю, что CDN может кэшировать только файлы на моём сайте и не может кэшировать файлы, на которые есть прямые ссылки с другого сайта?
Я храню каталожные файлы (mps и изображения) на другом сервере и делаю на них прямые ссылки на своём сайте Discourse. Правильно ли я понимаю, что такие файлы не будут кэшироваться CDN? Есть ли способ кэшировать и файлы с прямыми ссылками?
Если вы не запретите Discourse это делать, он загрузит эти удалённые изображения в собственное хранилище. Ниже предполагается, что вы отключили эту функцию.
Вы должны разместить этот сайт за CDN, а затем передать URL CDN в Discourse.
Если вы установите CDN перед вашим сайтом с изображениями, но передадите в Discourse URL источника, вы можете использовать встроенную функцию для замены URL источника на URL CDN.
Прав ли я, что если я активирую функцию CDN в Discourse и отключу сохранение оригиналов на сервере Discourse, то CDN-сервис закэширует эти внешние файлы, а Discourse заменит все ссылки на файлы, которые были напрямую подключены с другого сайта?
Сомневаюсь, что можно закэшировать внешние файлы, напрямую подключенные с других сайтов. Кто-нибудь может это подтвердить?
К сведению — я создал новую тему о настройке ускорения всего сайта через CDN (и завершения SSL) с использованием AWS CloudFront (ссылка ниже). Здесь есть свои сложности, поэтому действуйте осторожно.
На данный момент, в 2023 году, всё ещё необходимо строго соблюдать четыре правила ниже? Например, если я использую Akamai, который предназначен для ускорения основного доменного имени с помощью CDN. Есть ли у кого-то упрощённая конфигурация этих правил? Например, должны ли message bus и long polling по-прежнему обращаться к исходному серверу? Где должны быть настроены эти параметры? Похоже, что настройка long polling base url удалена из панели администратора?
Таким образом, «long polling base url» необходимо задать через консоль Rails, так как эта настройка была удалена из административной панели. Если для корректной работы сайта в режиме Full site CDN эта настройка всё ещё требуется, я, вероятно, упустил где-либо опубликованное ранее объяснение причин её удаления.
Аналогично, в файле app.yml должно быть установлено значение DISCOURSE_ENABLE_CORS: true.
Вы должны задать его с помощью переменной окружения (DISCOURSE_LONG_POLLING_BASE_URL) в вашем файле app.yml. Она скрыта, так как её нужно настраивать очень немногим, и предполагается, что если вы это делаете, то знаете, что делаете.
Спасибо, @pfaffman! Я должен был знать, что все эти переменные в верхнем регистре должны помещаться в app.yml.
Итак, в каких случаях применения message-bus вступят в силу? Например, ответ на пост, вызывающий уведомление и т.д.? Я проведу тестирование сценариев использования, чтобы убедиться, работает ли message-bus на моём сайте как ожидалось без установки DISCOURSE_LONG_POLLING_BASE_URL.
long_polling_base_url — это скрытая настройка сайта, но её можно задать через консоль Rails, если вы не используете переменную окружения в вашем файле app.yml:
Этот список определённо даёт больше понимания о Discourse.
Я настроил CDN для своего сайта, и он достиг граничных кешей, однако проблема с message-bus в заголовках ответа не проявлялась, но всё равно это не кажется надёжным. Настройки CORS также не установлены.
Нет, я использую CDN Akamai, который поддерживает кэширование динамического контента.
Согласно первому сообщению в этой теме, похоже, мне следует настроить переменную DISCOURSE_CDN_URL так же, как при использовании CDN не для всего сайта, хотя URL совпадает с URL самого сайта. Я просто не уверен, не сломает ли это мой сайт и не приведёт ли к необратимым последствиям, в результате чего мне придётся переустанавливать программное обеспечение с нуля. В этом сообщении Full Site CDN Using AWS CloudFront автор не меняет значение DISCOURSE_CDN_URL, и для обслуживания message-bus/long-polling не требуется отдельный URL. Я использую это решение, и мой сайт работает стабильно. Единственный недостаток этого подхода заключается в том, что в исходном коде страницы много относительных URL (без базового URL, так как значение DISCOURSE_CDN_URL пустое), из-за чего сайт выглядит не как продукт уровня продакшена.
Благодарю за ответ от @Falco. В этой настройке Full site CDN можно ли задать DISCOURSE_CDN_URL таким же, как DISCOURSE_HOSTNAME? Я предполагаю, что Full site CDN означает ускорение URL хоста через CDN, что делает DISCOURSE_CDN_URL идентичным DISCOURSE_HOSTNAME. Однако здесь нет подходящей документации по этому вопросу на meta.
Вам не нужен шаблон для этого. Просто настройте bunny на подтягивание данных с вашего сайта Discourse и установите значение DISCOURSE_CDN_URL в app.yml на CDN-эндпоинт, предоставленный bunny.