Время запуска Sencha Touch 2.3 с Cordova 3.5 долгое

Если вы создадите пример приложения Sencha Touch 2.3 с помощью sencha app generate... и упакуете его с помощью Cordova, вы увидите, что запуск приложения и отображение основного вида занимает около 4 секунд. Если это базовое скелетное приложение занимает так много времени, то реальные приложения, которые имеют гораздо больше представлений, контроллеров, хранилищ и т. д., будут занимать гораздо больше времени (6-8+ секунд).

Есть ли способ ускорить запуск? Для справки возьмем пример самого запущенного приложения сенчи. Сейчас это занимает 4 секунды. Итак, как нам улучшить производительность, чтобы запуск занимал 1 или менее 1 секунды?


person senchaDev    schedule 26.08.2014    source источник


Ответы (4)


Помимо того, что вы должны включать только необходимые контроллеры, представления и т. д., существует большая разница во времени между созданием разработки, тестовой сборки и производственной сборкой, которая сжимает, минимизирует все js (Sencha + ваш код) в уникальном «js». ' и уникальный файл 'css', который значительно сокращает время запуска (на этапе разработки каждый класс представляет собой отдельный файл).

sencha app build production 
person malcubierre    schedule 01.09.2014
comment
Я делаю пакет сборки приложения sencha, так как мне нужно упаковать приложение с помощью Cordova для Android и iOS. Рекомендуется ли в этом случае производственная сборка вместо сборки пакета? - person senchaDev; 03.09.2014
comment
Пакет — лучшее решение, оно также минимизирует статический контент внутри устройства. - person malcubierre; 03.09.2014

Мой совет будет:

  • Избегайте вложенных представлений
  • Выполнять иерархическую загрузку (не все модели контроллеров представлений и хранить в app.js, но требуется использование)
  • Убедитесь, что вы не создаете объекты и не пускайте их в ход без надлежащего уничтожения.
  • Скорость во многом зависит от телефонов, поэтому, если у вашей цели ограниченные ресурсы, телефоны могут рассмотреть другие варианты.

Как уже было сказано, это не нативно, и вы не получите такой же скорости (по крайней мере, не сейчас), но вы получите много других преимуществ.

person code4jhon    schedule 01.09.2014
comment
У меня около 20 представлений, 5 контроллеров, 10 моделей и 10 магазинов, все они определены в app.js. Должен ли я определить только 1 представление и 1 контроллер в app.js и упомянуть остальные представления, контроллеры, модели и хранилища, как требуется в контроллере? - person senchaDev; 03.09.2014
comment
нет, require следует использовать таким образом, чтобы каждое представление требовало всех других представлений, которые оно будет использовать. Например, в app.js можно загрузить MainView.js и сказать, что представление имеет 2 элемента (MyPanel и MyGrid), эти 2 представления было бы хорошо иметь в качестве требования MainView.js. - person code4jhon; 03.09.2014

Большую часть времени запуск приложения занимает много времени из-за следующих причин (с которыми я столкнулся)

1. Ненужная загрузка контроллеров, представлений в app.js напрямую.

2. Ненужная загрузка статических изображений/pdf (любого статического содержимого) каждый раз, когда мы обновляем приложение.

Нижеприведенные шаги будут полезны, если вы будете правильно следовать им в любом приложении sencha touch.

  1. Не загружайте все контроллеры внутри app.js напрямую, вы можете загружать контроллеры для конкретного устройства, используя профиль, как показано ниже.

    профили: ['Планшет', 'Телефон'],

    Выше строка будет в app.js, который отвечает за загрузку соответствующего профиля, эти файлы профиля также отвечают за загрузку всех контроллеров и представлений в соответствии с устройством.

  2. Файл app.json содержит раздел app.cache, внутри которого есть раздел кеша, где вы можете упомянуть все статические изображения или pdf, чтобы каждый раз не загружать ненужные файлы.

person dReAmEr    schedule 01.09.2014
comment
Поскольку я упаковываю свое приложение с помощью Cordova для Android и iOS, имеет ли здесь смысл логика app.cache? Я понимаю, что это будет кэшировать изображения в случае веб-приложения, которое должно каждый раз повторно загружать изображение. Но как насчет упакованного приложения, здесь тоже работает логика кеша? - person senchaDev; 03.09.2014

Как уже упоминал malcubierre, нам нужно сжать все необходимые файлы js и css с помощью команды sencha app build. Если вы ориентируетесь на мобильные телефоны, вы можете использовать команду sencha app build package.

Вы также можете удалить лишние импорты из файла app.scss, которые вы не используете в приложении. Удаление лишнего импорта в тематической части сокращает время загрузки app.css.

person Apoorv Nag    schedule 27.02.2015