Я только что включил загрузку в S3 на своём экземпляре Discourse, настроив его с CDN CloudFront. Я протестировал загрузку изображения и PDF-файла как вложений в посты, и оба файла успешно загружаются в бакет S3. Однако, при просмотре страницы, где отображаются оба файла, я заметил, что для PDF не используется ссылка CDN, а для изображения — используется.
Для изображения атрибут src тега img указывает на CDN, и браузер использует его для загрузки миниатюры.
Для PDF-файла атрибут src ссылки указывает на относительный URL (/uploads/short-url/xxxxxxxxxxxxx.pdf), который, похоже, перенаправляет на файл в моём реальном бакете S3 (не через CDN).
Это ожидаемое поведение? Это мой первый опыт использования CDN, поэтому, возможно, обычно большие файлы не обслуживаются через него? Я просто хочу убедиться, что все мои настройки правильные и работают, прежде чем переносить все старые посты в S3.
Я думаю, что вам нужно пересобрать сообщения. Те, что были загружены до добавления CDN, не обновляются автоматически. Пересобрать все сообщения, соответствующие шаблону (возможно, будет проще пересобрать все сообщения).
Я только что пересобрал все сообщения и не заметил изменений. После пересборки я создал несколько тестовых сообщений. Подведу итог тому, что я наблюдаю (и, похоже, то же самое видит @Richie):
Изображение в сообщении корректно ссылается на CDN для отображения изображения в самом сообщении.
Однако для изображения ссылка «Скачать» (в правом нижнем углу при просмотре изображения в полном размере) ведёт на короткую ссылку, которая перенаправляет на мой бакет S3 (а не на CDN).
Для загруженного PDF-файла ссылка также ведёт на короткую ссылку, которая перенаправляет на мой бакет S3 (а не на CDN).
Похоже, что всякий раз, когда используется короткая ссылка, при перенаправлении CDN не задействуется.
В моей настройке Discourse я использую S3 как для загрузок, так и для резервных копий. Я ещё не перенёс все существующие загрузки в S3 (сделаю это, как только решу эту проблему). Также у меня не включены защищённые загрузки.
Спасибо за сообщение об этом. На следующей неделе мы проверим ситуацию и исправим все оставшиеся пропуски в обходе CDN. Мы всегда должны стремиться обращаться к CDN, если это возможно, с оговоркой, что если у вас включена безопасная загрузка файлов, мы не сможем сделать это легко.