Более быстрые (и компактные) загрузки в Discourse с использованием Rust, WebAssembly и MozJPEG | Блог

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


Это сопроводительная тема обсуждения для оригинальной записи на сайте https://blog.discourse.org/2021/07/faster-user-uploads-on-discourse-with-rust-webassembly-and-mozjpeg/
50 лайков

Удивительно! :heart_eyes: Это невероятное улучшение. Отличная работа. Теперь гораздо веселее загружать и делиться фотографиями в обсуждениях.

И ещё один приятный бонус — пользователи с медленным соединением теперь смогут загружать сразу множество фотографий, не сталкиваясь с надоедливым «Загрузка…» вместо самого изображения. :+1:

21 лайк

Отличное улучшение… и с днём рождения, Рафаэль!

13 лайков

Очень рады видеть, что Discourse всё активнее использует возможности Rust! :crab: :muscle:

imageflow — ещё одна впечатляющая библиотека на Rust в этой области.

Я позволил себе поделиться этой новостью здесь:

17 лайков

Это то, что у меня сейчас на сайте? То есть вы выкатили такой уровень улучшений всем пользователям просто потому, что хотите сделать продукт лучше?

Часть меня понимает, что это правда. Я достаточно давно в теме, чтобы знать, как вы работаете, но черт возьми. Часть меня чувствует, что я упустил момент, когда это стало стратегией продвинутой оптимизации.

9 лайков

Да и да. :smiley:

8 лайков

Круто, чувак.

Билл Мюррей Спасибо GIF от filmeditor

9 лайков

К сожалению, от пользователей Android поступает много жалоб на прыгающие курсоры и ухудшение производительности загрузки.

3 лайка

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

Если верны все следующие условия:

  • Вас не беспокоят затраты на хранение
  • У большинства ваших пользователей хорошее интернет-соединение для загрузки
  • Большая часть вашей аудитории просматривает сайт с Android-смартфонов среднего класса или ниже

Возможно, вам стоит либо отключить эту функцию, либо увеличить порог минимального размера на несколько мегабайт.

10 лайков

Это отличная новость!

К сожалению, у многих моих пользователей довольно дешёвые или старые телефоны на Android, поэтому я не планирую включать эту функцию в ближайшее время. На своём iPhone 12 я никаких проблем не заметил.

5 лайков

Фалько, было бы возможно или интересно добавить настройку для пользователей, чтобы те, кто этого хочет, могли её включить? Или, как на Craigslist, добавить опцию «использовать классический загрузчик изображений»? Нажатие на эту кнопку переключает метод загрузки.

5 лайков

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

Это было включено в исходный RFC, но было удалено в соответствии с полученными комментариями.

6 лайков

Привет, Рафаэль,

Кажется, у нас небольшая проблема с обработкой новых плейсхолдеров. Похоже, изображения вставляются в строку, а не с новой строки. Это происходит не только в редакторе до оптимизации, но и при обычных загрузках. Спасибо :slightly_smiling_face:

5 лайков

Это должно исправить проблему

9 лайков

Привет, Рафаэль,

Извини за задержку, только что проверил. :confused: Всё работает нормально при загрузке нескольких файлов, если перетаскивать изображения на новую строку, но проблема, похоже, сохраняется, если перетаскивать изображение(я) в конец текста. Спасибо :slightly_smiling_face:

4 лайка

Всё в порядке, @Don?

6 лайков

Похоже, это всё ещё происходит.

4 лайка

Это уже исправлено? @Falco

4 лайка

Извините, в чём баг в этом видео? Всё выглядит именно так, как я и ожидал(а)?

6 лайков

Я упустил эту функцию A setting to always insert images as separate paragraphs - #16 by andrei, которая, как мне кажется, работала хорошо до этого коммита Faster (and smaller) uploads in Discourse with Rust, WebAssembly and MozJPEG | Blog - #9 by Falco. Не уверен. :confused:

У меня есть видео из моего сообщества об этой функции, когда я представлял её участникам.

5 лайков