IMS. ← Ко всем документам

Почему программа может работать медленно и как это лечится

IMS — веб-приложение без сборки (это сознательный выбор: весь код открыт
и читаем, ничего не спрятано в скомпилированном виде). Из-за этого на
экран загружается не один файл, а полсотни отдельных — и есть несколько
типичных причин, из-за которых это ощущается медленно. Ниже — что мы уже
исправили, и что можно проверить самостоятельно, если снова станет
медленно.

Уже исправлено в этой поставке

  1. Адрес 127.0.0.1 вместо localhost. На части Windows-компьютеров
    слово localhost сначала пробует подключиться по IPv6, не получает
    ответа около 2 секунд, только потом пробует обычный адрес — и это на
    КАЖДОЕ новое соединение, а их за один экран уходит несколько десятков.
    Мы измерили это напрямую (см. ниже, «Как проверить») — реальная работа
    программы отвечает за 40-130 миллисекунд, а вот ожидание подключения
    съедало по 4 секунды. Поэтому во всех наших скриптах и в адресе
    в браузере используется именно http://127.0.0.1:8010, не localhost.

  2. Кеш браузера для файлов интерфейса. Раньше при каждом заходе в
    программу браузер заново скачивал все файлы интерфейса. Теперь сервер
    говорит браузеру «этот файл можно запомнить», и при повторном заходе
    всё, что не изменилось, берётся с диска, а не по сети.

  3. Курсор "занято" на время ответа сервера. Раньше при нажатии кнопки
    не было видно, что программа уже работает — это подталкивало нажимать
    ещё раз, пока идёт обработка. Теперь курсор превращается в "часы" на
    время запроса.

  4. Не хранить программу внутри OneDrive/Google Drive/Dropbox. Папки,
    которые синхронизируются в реальном времени, заметно замедляют доступ
    к файлам — а у нас их много. Держите IMSD на обычном локальном диске.

Если снова стало медленно — как проверить, в чём дело

Самый надёжный способ — не гадать, а посмотреть, где реально теряется
время:

  1. Открыть программу в браузере, нажать F12 (откроются инструменты
    разработчика).
  2. Перейти на вкладку Network (Сеть).
  3. Поставить галочку Preserve log (Сохранять журнал), если есть.
  4. Повторить то действие, которое кажется медленным (открыть экран,
    нажать кнопку).
  5. Правой кнопкой по списку запросов → Save all as HAR (Сохранить
    всё как HAR) — сохранится файл .har.

Этот файл можно передать для анализа — по нему точно видно, сколько
времени ушло на подключение, сколько на ответ сервера, сколько на
загрузку файла. Так и была найдена причина №1 выше — без такого файла
это была бы просто догадка.

Что мы сознательно не делаем (и почему)