Загрузка в S3: использовать ли CDN для PDF-файлов?

Всем привет,

Я только что включил загрузку в S3 на своём экземпляре Discourse, настроив его с CDN CloudFront. Я протестировал загрузку изображения и PDF-файла как вложений в посты, и оба файла успешно загружаются в бакет S3. Однако, при просмотре страницы, где отображаются оба файла, я заметил, что для PDF не используется ссылка CDN, а для изображения — используется.

Для изображения атрибут src тега img указывает на CDN, и браузер использует его для загрузки миниатюры.

Для PDF-файла атрибут src ссылки указывает на относительный URL (/uploads/short-url/xxxxxxxxxxxxx.pdf), который, похоже, перенаправляет на файл в моём реальном бакете S3 (не через CDN).

Это ожидаемое поведение? Это мой первый опыт использования CDN, поэтому, возможно, обычно большие файлы не обслуживаются через него? Я просто хочу убедиться, что все мои настройки правильные и работают, прежде чем переносить все старые посты в S3.

Спасибо!

4 лайка

Интересное наблюдение, на которое я раньше не обращал внимания.

Я провёл несколько тестов.

Некоторые уже загруженные PDF-файлы действительно ссылаются напрямую на CDN:

Некоторые уже загруженные PDF-файлы не используют CDN:

В чём разница? :thinking:

Я не знаю :man_shrugging: Мне нужно проверить больше примеров.

Я провёл быстрый тест, отправив сообщение самому себе и создав новый пост: как и указано в ваших данных, отображается /short-url/:

При клике на ссылку файл загружается напрямую из S3-бакета, что также соответствует вашему описанию:

Я не совсем понимаю, почему некоторые наши посты используют CDN, а некоторые нет, но я могу воспроизвести часть того, что вы наблюдаете.

1 лайк

Я думаю, что вам нужно пересобрать сообщения. Те, что были загружены до добавления CDN, не обновляются автоматически. Пересобрать все сообщения, соответствующие шаблону (возможно, будет проще пересобрать все сообщения).

1 лайк

Спасибо @pfaffman

Я только что пересобрал все сообщения и не заметил изменений. После пересборки я создал несколько тестовых сообщений. Подведу итог тому, что я наблюдаю (и, похоже, то же самое видит @Richie):

  • Изображение в сообщении корректно ссылается на CDN для отображения изображения в самом сообщении.
  • Однако для изображения ссылка «Скачать» (в правом нижнем углу при просмотре изображения в полном размере) ведёт на короткую ссылку, которая перенаправляет на мой бакет S3 (а не на CDN).
  • Для загруженного PDF-файла ссылка также ведёт на короткую ссылку, которая перенаправляет на мой бакет S3 (а не на CDN).

Похоже, что всякий раз, когда используется короткая ссылка, при перенаправлении CDN не задействуется.

В моей настройке Discourse я использую S3 как для загрузок, так и для резервных копий. Я ещё не перенёс все существующие загрузки в S3 (сделаю это, как только решу эту проблему). Также у меня не включены защищённые загрузки.

Спасибо!

4 лайка

Спасибо за сообщение об этом. На следующей неделе мы проверим ситуацию и исправим все оставшиеся пропуски в обходе CDN. Мы всегда должны стремиться обращаться к CDN, если это возможно, с оговоркой, что если у вас включена безопасная загрузка файлов, мы не сможем сделать это легко.

5 лайков

Я также заметил это при загрузке других файлов:

1 лайк