Одностраничное отображение больших изображений не работает без визуального сигнала

Запущена версия Discourse 3.1.0.beta3 (7c6a8f1c74)

Мы наблюдаем очень странное поведение с Onebox и изображениями в форматах PNG / JPG.

Вот изображение, которое я хотел бы встроить через Onebox: https://dronescene.co.uk/images/uploads/fullsize/20211216142548_DJI_0205_HDR_Pano.png

Оно должно корректно отображаться следующим образом:

Однако вместо этого изображение просто отображается как ссылка в сообщении.

В консоли браузера показана ошибка 404:

Некоторые другие примеры:

Маленький PNG:

https://dronescene.co.uk/images/uploads/fullsize/20211106095005_vlcsnap_2021_05_04_17h10m24s149.png


Большой JPG:

https://dronescene.co.uk/images/uploads/fullsize/20230227161106_DJI_0087_1.jpg

Большой PNG:

https://dronescene.co.uk/images/uploads/fullsize/20220103215207_IMG_5782.png

Хм, здесь работает.

Но на try.discourse.org не работает.

https://try.discourse.org/t/lorem-lorem-ipsum-dolor-sit-amet-consectetur-adipiscing-elit/1425/2

Видите, почему большое изображение не отображается?

На самом деле, я не думаю, что это так. Большое изображение не появилось? :thinking:

Сначала я подумал, что эта ошибка может быть связана с размером файла: наши участники часто загружают изображения более 40 МБ, но я смог воспроизвести эту проблему на try.discourse.org, используя всего лишь PNG-изображение размером 5 МБ.

Изображение отображается в окне редактора при составлении сообщения, но не появляется в самом сообщении после отправки.

Оно также отображается в окне редактора, если я редактирую сообщение:

Вот ссылка на изображение для проверки через onebox:

https://dronescene.co.uk/images/uploads/fullsize/20230329003455_Screenshot_2023_03_29_at_00.23.31.png

И для проверки здесь, на meta, оно должно появиться здесь:

Эта ошибка присутствует и на try, и на meta.

Изображение ненадолго появилось, когда я отправил этот пост, но через несколько секунд снова исчезло. Мне следовало записать экран. Неужели оно теряется или повреждается в процессе обработки? :thinking:

Я немного покопался в этой ошибке.

Если я открою пост, где изображение не было обработано через onebox или не загружено локально, то при редактировании поста в консоли браузера я вижу ошибку 404 Not Found:

URL, который он пытается получить:

https://greyarro.ws/onebox?url=https%3A%2F%2Fdronescene.co.uk%2Fimages%2Fuploads%2Ffullsize%2F20230411071449_8719D92D_726A_46BF_9437_A06DD0507D77.jpeg&refresh=true&category_id=17&topic_id=61425

Непонятно, почему возникает ошибка 404, ведь изображение существует :thinking:

https://dronescene.co.uk/images/uploads/fullsize/20230411071449_8719D92D_726A_46BF_9437_A06DD0507D77.jpeg

Это работало исправно последние пять лет, проблема появилась только в последние три-четыре недели.

1 лайк

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

Когда я пытаюсь добавить https://dronescene.co.uk/images/uploads/fullsize/20211216142548_DJI_0205_HDR_Pano.png, оно появляется в превью и в посте на секунду, а затем просто исчезает. :person_shrugging:

Я не вижу ошибок 404. Сначала подумал, что дело в размере файла, так как в превью он загружался построчно, будто мы вернулись в 90-е :slight_smile: Но вы сказали, что пробовали с меньшим файлом и получили тот же результат. Какой именно файл это был? Я тоже попробую его. :+1:

1 лайк

Спасибо, @JammyDodger.

Вот небольшое изображение размером 5 МБ, у которого та же проблема: https://dronescene.co.uk/images/uploads/fullsize/20230329003455_Screenshot_2023_03_29_at_00.23.31.png

И оно должно отображаться здесь:

Как вы и говорите, оно появляется на секунду, а затем снова исчезает.

Однако в редакторе сообщения оно видно, если я редактирую пост :thinking: :exploding_head:

Я полагаю, оно было удалено, потому что файл слишком большой. По умолчанию параметр max image size kb установлен на 4096 КБ, а размер этого конкретного файла превышает 5000 КБ.

Согласно моим данным, при загрузке изображения оно автоматически изменяется в размерах/сжимается перед отправкой. Вы можете загружать большие фотографии благодаря оптимизации изображений на стороне браузера.

При включении настройки download remote images to local Discourse попытается загрузить изображение в исходном виде, и если оно окажется слишком большим, оно будет удалено из содержимого поста.

3 лайка

Привет @Arkshine

Изменялось ли это значение по умолчанию за последние пару месяцев?

У нас более 1000 изображений размером 30–40 МБ и более, которые уже много лет успешно подгружаются удалённо без каких-либо проблем :thinking:

Извините, @Arkshine, я ещё раз посмотрел на это сегодня утром, так как, возможно, неправильно понял ваше сообщение ранее.

Мы изменили наше настройки несколько лет назад, чтобы разрешить изображения размером до 100 МБ.

Я пытался точно определить, когда именно это перестало работать, и смог сузить период до какого-то момента после 3 марта 2023 года.

Вот изображение размером 35 МБ, которое работало 3 марта 2023 года:

https://dronescene.co.uk/images/uploads/fullsize/20230303120013_DJI_0013.jpg

А вот пример размером 27,3 МБ с той же даты в марте:

https://dronescene.co.uk/images/uploads/fullsize/20230303120713_DJI_0055.jpg

И пример размером 11 МБ от 27 февраля:

Возможно, мне придётся просмотреть коммиты за последние шесть недель и посмотреть, не бросится ли мне в глаза что-то в сообщениях коммитов :slight_smile:

1 лайк

Сырое содержимое этого конкретного поста (и следующего за ним) на вашем форуме показывает, что это загруженное изображение, а не внешняя ссылка. Благодаря Client side image optimization enabled by default вы сможете загружать большие изображения.

Ваша первоначальная проблема касается вставки внешней ссылки на изображение.
Тем не менее, я не уверен, что поведение Discourse — не проверять размер изображения при вставке ссылки на него — является ожидаемым. :thinking:

Можете ли вы поделиться значением upload_size в вашем файле app.yml?

Привет, Ричи!

Не уверен, что Discourse способен скачивать очень большие удалённые изображения.

Однако помню, что раньше, когда вы вставляли ссылку на большое изображение (хотлинкинг), появлялось сообщение вроде «Это изображение слишком велико для отображения на форуме» с ссылкой на внешнюю картинку.

Кажется, сейчас это больше не работает.

При вставке ссылки на большое внешнее изображение (https://upload.wikimedia.org/wikipedia/commons/0/0b/New_cyclic_large.gif — GIF-файл 11 МБ) я могу воспроизвести вашу проблему:

Выглядит очень похоже на баг и, возможно, регрессию.

1 лайк

Думаю, вы, возможно, неправильно поняли суть проблемы, или, может быть, вы видите причину ошибки :thinking:

Я не загружал это изображение в Discourse, я просто вставил ссылку, точно так же, как в записи экрана @Canapin ниже :blush:

Оно уже много лет подгружает большие изображения, @Canapin, много лет, перестало работать только за последние шесть-восемь недель.

Спасибо за проверку :+1:

Я могу воспроизвести это на нашем форуме, на try.discourse.org и на meta.discourse.org.

Я назначил награду за решение этой проблемы:

Ещё раз спасибо всем, кто уже занимался этой проблемой :bowing_man:

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

2 лайка

Спасибо, @Lilly, это именно та проблема, которую мы тоже наблюдаем.

1 лайк

Я только что проверил в личных сообщениях, и изображение отображается корректно, как и ожидалось, и ведёт на оригинал. Похоже, проблема исключительно в просмотрах тем.

@Richie, кстати, классные фото :slightly_smiling_face:

2 лайка

Кстати, я только что проверил, но у меня он тоже исчез в личных сообщениях.

2 лайка

странно

вот мой вид PM:

та же проблема наблюдается и в десктопной, и в мобильной версиях.