Ionic-framework: Accélérer le chargement initial

Créé le 6 juin 2016  ·  159Commentaires  ·  Source: ionic-team/ionic-framework

Nous développons une application partiellement native et partiellement hybride.
Nous ouvrirons l'activité cordova lorsque l'utilisateur cliquera sur un élément de menu et terminerons l'activité lorsque l'utilisateur cliquera en arrière.
Le problème avec cette approche est qu'il faut un certain temps pour s'afficher à l'écran pour la première fois. Nous hébergeons tous les fichiers de ressources dans le dossier assets, donc la mise en cache n'a pas beaucoup de sens. Existe-t-il un moyen progressif de charger l'application ?

Commentaire le plus utile

Tous,

Nous testons fortement cela en interne maintenant. Nous avons fait de grands progrès cette semaine.

Merci,
Dan

Tous les 159 commentaires

Bonjour @dheran . Le temps de démarrage est quelque chose que nous travaillons dur à réduire au moment où nous parlons (: . Nous travaillons actuellement sur une nouvelle chaîne de construction qui rendra les applications Ionic beaucoup plus petites et qui inclura la compilation de modèles hors ligne. Avec ces deux améliorations, vous pouvez vous attendre à voir une énorme amélioration du temps de démarrage. Je demanderais autour de StackOverflow ou de nos forums (forum.ionicframework.com) des moyens de "précharger" une vue Web qui se trouve dans une application native. Merci d'utiliser Ionic !

@jgw96 Hé, existe-t-il une demande ou un problème de fonctionnalité ? Pour qu'il soit facile à suivre et utilisable une fois qu'il aura été mis en œuvre.

@dheran Bonne question ! Pour le moment, il n'y a pas de bons problèmes de suivi pour cela, car cela n'en est qu'à ses débuts, mais c'est une priorité pour nous et l'équipe ionic-cli fait beaucoup de progrès à ce sujet. Une fois que cela ira plus loin, j'essaierai de mettre à jour ce problème avec nos progrès afin que vous sachiez à quoi vous attendre (:

@ jgw96 alors, pourquoi ne pas le garder ouvert jusqu'à ?

@ jgw96 La suppression des css inutilisés pendant le processus de construction contribuera également beaucoup

J'utilise ionic2 pour créer un site Web mobile, puis je constate que lorsque j'utilise le navigateur Android 4.4, il est très lent. Avez-vous de bonnes suggestions pour moi?
site Web : https://zhaoxie.net/static/weixin/index.html
image

CLI de Cordoue : 6.1.1
Version du cadre ionique : 2.0.0-beta.6
Version Ionic CLI : 2.0.0-beta.31
Version de l'application Ionic Lib : 2.0.0-beta.17
version de déploiement d'ios : 1.8.5
version ios-sim : 5.0.6
OS : Mac OS X El Capitan
Version du nœud : v5.3.0
Version Xcode : Xcode 7.2 Version de construction 7C68

@ jgw96 une idée de la version qui obtiendra cette fonctionnalité ?

Salut @dheran ! Bonne question! Nous avons une implémentation fonctionnelle de treeshaking avec webpack 2 il y a quelques jours et nous travaillons toujours sur l'utilisation du compilateur hors ligne. Après avoir lu les notes de réunion de l'équipe Angular aujourd'hui, il semble qu'ils n'appelleront pas le compilateur de modèles hors ligne "stable" avant Angular 2 rc 4, mais j'espère que nous pourrons avoir une implémentation du compilateur hors ligne avant cette date.

@ jgw96 Il semble qu'ils aient déjà fermé le problème. https://github.com/angular/angular/issues/3605
et Angular RC 4 est terminé à près de 33% (en étape).
Peut-on s'attendre au nouveau compilateur dans ionic beta 10 ou 11 ?

Salut @dheran , nous y travaillons activement. Il s'agit d'un élément extrêmement prioritaire pour nous, alors reposez-vous tranquillement en sachant que nous le ferons dès que possible.

Merci,
Dan

@danbucholtz pouvez-vous me suggérer une solution de contournement temporaire pour réduire le temps de rendu initial jusqu'à l'arrivée de la solution officielle. parce que, j'ai eu deux choix, soit il faut résoudre ce problème, soit supprimer et construire le même avec le code natif.

Salut @dheran ,

Désolé, nous ne proposons aucune solution de contournement pour le moment car nous n'en avons pas imiter ce qu'ils font. C'est extrêmement important pour nous d'entrer dans le processus de construction dès que possible, mais ce n'est tout simplement pas encore prêt.

Merci,
Dan

+1

Nous pouvons attendre jusqu'à rc4, mais veuillez garder la compilation du modèle hors ligne en haute priorité. Pour info, le temps initial de notre application est d'environ 8 s, mais le temps initial d'une autre application native est d'environ ~ 1-4 s. Il faut vraiment raccourcir le temps initial.

Enfin, merci pour le travail.

@grapemix Sa priorité absolue ! Nous travaillons constamment avec l'équipe Angular pour que la compilation de modèles hors ligne fonctionne avec Ionic, ainsi que le tremblement des arbres et la minification agressive afin que nous puissions réduire la taille moyenne de notre application. Comme mentionné ci-dessus, nous attendons quelques changements dans Angular pour le moment, mais cela sera certainement fait (:

+1

+1

@jgw96 @danbucholtz les gars, des progrès dans ce domaine ? pouvons-nous obtenir un correctif dans la bêta 11 ?

+1

Dans quel référentiel suivez-vous cela
Je pense que je vais pouvoir t'aider un peu concernant le webpack

@prijindal ,

Je crois que @jthoms1 fait le travail sur cette branche.
https://github.com/driftyco/ionic/tree/adding-offline-template-compiling

Merci,
Dan

Salut @jthoms1 , les modifications seront-elles fusionnées avec master avant la bêta 11 ?

Oui, j'attends aussi la compilation hors ligne, mais quelque chose peut être fait maintenant.
Notre site est entièrement sur Ionic2 beta.8
http://m.sherpadesk.com/

J'ai aussi une application hybride et j'ai fait quelques optimisations et j'ai obtenu un temps de chargement de 417 ms .
Regardez le rapport https://tools.pingdom.com/#!/DW6Td/http://m.sherpadesk.com/17
La taille du site a également diminué de 600 % (3 Mo -> 500 Ko)
Vitesse de réponse de l'interaction utilisateur améliorée de 2000% (2 secondes -> 100 ms)

Bonnes recommandations : http://blog.angular-university.io/how-to-run-angular-2-in-production-today/36

Je posterai tous mes paramètres de gulp et un lien vers l'Appstore ici : http://www.sherpadesk.com/blog/

@Evgeniynet très sympa.

Quelques questions:

  1. Lors de l'installation de l'application, elle s'ouvre instantanément, mais le fichier. Je charge votre profil et il semble bloqué pendant 5 secondes. Pourquoi?
  2. Comment avez-vous optimisé le temps de chargement sans compilation hors ligne ?
  3. Votre site mobile est-il ionic2 ?
  4. Votre site Web de bureau est-il ionic2 ?

J'envisage d'utiliser ionic 2 mais la seule chose qui m'arrête, c'est que je dois gérer le projet webapp + le projet mobile ionic2.

Merci

@evgeniynet est-il desservi par un nœud ?
Il semble être pré-compilé. Mais dans la plupart de nos cas, il s'agira d'un hébergement de stockage de périphérique (application phonegap).

@dheran , non, il est hébergé sur le site Web Azure, uniquement des fichiers html et js simples produits par la tâche de construction ionic 2 gulp.

@justme1

  1. oui, j'ai fait un tour avec http://www.bennadel.com/blog/3105-creating-a-pre-bootstrap-loading-screen-in-angular-2-rc-1.htm

Votre site mobile est-il ionic2 ?
Oui

Votre site Web de bureau est-il ionic2 ?
Oui

Mon application ios charge simplement le site dans la vue Web, rien de plus.

une seule base de code pour iOS, Android et Windows Phone, une application Web, une extension Chrome et même une Apple iWatch

J'ai défini un indicateur spécial pour arrêter le chargement de cordova, pour éviter l'erreur gap://

J'écris un guide complet à ce sujet sur http://www.sherpadesk.com/blog/

@evgeniynet

  1. Si c'est le cas alors le chargement ne semble pas vraiment plus rapide :-)

Concernant une base de code :

D'après ce que j'ai compris, ionic2 n'est pas censé être utilisé comme site Web de bureau car il est entièrement pris en charge par les navigateurs. Ce problème ne vous dérange pas ?

Comptez sur moi pour attendre cette fonctionnalité.

Salut, des nouvelles à ce sujet ?
J'utilise la version :
Cordoue CLI : 6.3.0
Version du cadre ionique : 2.0.0-beta.10
Version Ionic CLI : 2.0.0-beta.35
Version de l'application Ionic Lib : 2.0.0-beta.19
LG Nexus 5 (à partir de 6.0)
L'application de tutoriel Sidemenu v1 se charge en 3 secondes
--v2 chargement du menu latéral en 6 secondes

La fonctionnalité de compilation anticipée arrive dans la version bêta 12. Cela accélérera considérablement le chargement initial et réduira considérablement la taille de l'ensemble. Nous sommes sur le point de lancer la bêta 11, c'est donc la prochaine étape. C'est notre priorité n°1. Nous l'avons fait fonctionner sur une branche, donc nous sommes proches.

Merci,
Dan

c'est vraiment lent pour la première fois. en attendant l'optimisation

@danbucholtz ou quiconque ajoute ce problème au jalon bêta 12

@danbucholtz pouvons-nous utiliser le code de la succursale ? Désolé, je ne peux pas attendre la version bêta 12. :-(
S'il vous plaît donnez-nous un communiqué rapide..

@dheran ,

Ce changement nécessite Angular RC 5 qui n'est pas encore sorti. Nous le publierons dès que la bêta 12 sera prête. Nous n'allons pas sortir tant qu'il n'est pas prêt à partir.

Une bonne solution à court terme pourrait consister à utiliser des modèles en ligne, comme indiqué ci-dessous. Ce sera plus rapide à court terme. Essayez-le et voyez si cela accélère les choses pour vous.

@Component({
   template: `
   <ion-content>
      <div>content</div>
   </ion-content>
  `
})
export MyClass {
}

Merci,
Dan

@danbucholtz Inline aide beaucoup.
J'ai écrit un petit code dans mon gulpfile.js qui le fait pendant la construction.

gulp.task('build', ['build:prequel'], function(done) {
  glob('./www/build/**/*.html', function(e,files) {
    var indexPath = './www/build/js/app.bundle.js'
    var js = fs.readFileSync(indexPath, 'utf8');

    async.eachSeries(files, function(file, callback) {
      filename = file.substr(6)
      var html = fs.readFileSync(file, 'utf8');
      js = js.replace("templateUrl: '" + filename + "'", "template: `" + html +"`")
      callback()
    }, function() {
      fs.writeFile(indexPath, js, 'utf8', function(err, data) {
        done()
      });
    })
  })
})

Oui, ce n'est pas propre et ce n'est pas la meilleure façon de le faire.
Mais cela fonctionne comme un charme.

PS : L'inlining n'aide pas beaucoup au démarrage initial, peut-être au plus 0,5 seconde. Mais cela facilite certainement la transition entre les pages ou chaque fois que vous chargez dynamiquement un composant.

@prijindal , sympa ! C'est génial! Avec le compilateur AoT disponible dans la version bêta 12, peu importe que le modèle soit un fichier en ligne ou externe. Il sera converti en JS pur dans le cadre du processus de construction. Beau travail pour comprendre ça !

Merci,
Dan

Salut, j'ai vérifié la page Angular et je vois que RC5 est sorti. Que vouliez-vous dire par "jusqu'à rc5 out" ?

@kLkA , @dheran Donnez une pause à l'équipe Ionic - ils essaient certainement de sortir les bêtas aussi vite que possible et pinger tous les jours ne les aide en aucune façon. Ils travaillent directement avec Google sur Angular et devraient certainement savoir qu'Angular2 rc5 est sorti.

Oui et Google a publié rc 5 comme il y a quelques heures à peine.
Je suis sûr qu'ils sont au courant de la sortie et qu'ils travaillent sur quelque chose pour l'intégrer à la version bêta 12

@astec vraiment ? J'espère que vous n'êtes pas à notre place.
Ce problème nous empêche de passer en direct. Êtes-vous dans cette position?
Si vous lisez attentivement mon commentaire. J'ai demandé à l'équipe Ionic de pouvoir publier un correctif AoT (danbucholtz a déclaré que cela avait été fait dans une branche distincte) en tant que version rapide au lieu d'un correctif AoT + d'autres corrections de bogues non prioritaires. Si ce n'est pas une priorité pour vous et que nos commentaires vous spamment, je vous suggère de vous désinscrire.

@dheran , j'étais à votre place au début de la version bêta en pensant que c'était presque là et que mon application est presque prête à être publiée. Mais je suis fatigué de me battre avec les changements d'API/de comportement. Depuis lors, Parse.com a annoncé sa fermeture et je dois réécrire mon système d'authentification. J'ai donc décidé de le mettre de côté et de développer un bot Telegram+FB pour mon application. Je ressens de la sympathie pour votre situation, mais c'est ce que vous obtenez lorsque vous sautez dans un wagon bêta. Si vous voulez une chronologie garantie, vous étiez libre de choisir Ionic1 ou toute autre plate-forme non bêta. Je serai moi-même de retour au développement de l'application Ionic2 une fois que nous aurons obtenu la première version candidate. Ou au moins Beta12. Soit je surestime la complexité de la "compilation à l'avance", soit vous la sous-estimez. Quoi qu'il en soit, je ne vais plus enseigner la patience à personne ici - veuillez accepter mes excuses et bonne chance dans vos efforts.

Ce n'est pas le fil sur l'affichage de vos besoins et expériences. Merci de vous en tenir au sujet ou de le laisser tel quel. ??

Dans l'attente de ionic2 beta12. Toute la meilleure équipe :)

Salut @dheran ! Je suis désolé et je ressens définitivement votre frustration, nous avons travaillé aussi dur que possible pour que cela fonctionne et je peux dire avec plaisir que nous sommes extrêmement proches maintenant et que ce sera dans la version bêta.12 avec quelques autres bogues critiques correctifs. Nous aurions aimé que cela sorte plus tôt, mais nous avons travaillé avec angular ces dernières semaines pour corriger certains bogues de leur côté qui empêchaient la compilation d'aot de fonctionner. Il nous a également fallu un certain temps pour d'abord optimiser Ionic pour la nouvelle compilation aot, et deuxièmement, pour apporter toutes les modifications nécessaires pour travailler avec Angular 2 RC5. La raison pour laquelle nous ne pouvons pas vous recommander d'utiliser la branche mentionnée ci-dessus est que les tâches de gulp pour créer votre application ne sont pas encore complètement terminées. Ainsi, bien que techniquement vous puissiez l'utiliser, vous ne seriez pas réellement en mesure de créer votre application. Nous travaillons avec une version préliminaire d'Angular 2 rc5 depuis un certain temps maintenant, mais nous devons attendre que cette version soit rendue publique comme tout le monde avant de nous sentir à l'aise de faire une version qui l'inclut. Nous sommes toujours en version bêta, ce qui signifie que les choses sont en cours de travail et vont changer et c'est juste le nom du jeu quand il s'agit de logiciels bêta. Enfin, lorsque vous interagissez avec d'autres membres de la communauté, cela vous dérangerait-il de garder notre code de conduite à l'esprit ? Merci d'avoir utilisé Ionic ! De plus, si jamais vous voulez voir ce qui fonctionnait, vous pouvez consulter nos notes de réunion (qui sont également partagées sur Twitter) et notre feuille de route .

Je ne suis pas sûr, mais peut-être que les principaux progrès dans l'accélération d'ionic se font dans la branche ngmodule . Ai-je tort?

Bonne adresse @msaelices ! En fait, la majeure partie du cadre de cela se fait ici https://github.com/driftyco/ionic/commits/deeplinks-ngmodule pour le moment. Merci!

Pour moi, le problème ne concerne pas le chargement initial (comme lors du démarrage), mais chaque fois que l'utilisateur est allé sur une page qu'il n'a pas visitée.

En attendant que ce compilateur AoT passe à ionic, ce que j'ai fait est d'ajouter un écran _splash_ (juste une page ionique avec le logo de l'application dessus) appelé TemplatePrecompiler qui prend tous les composants (tout @Component de mon application, qu'il s'agisse d'une page Ionic ou d'un composant) et les compile un par un au moment de l'exécution. Une fois cela fait, je redirige vers la page d'accueil.
C'est vraiment utile, car l'utilisateur ne voit qu'un écran de démarrage qui prend un certain temps (~ 5 secondes pour mon application) mais une fois que tout est chargé, tous les écrans vont vite. Et vous pouvez même mettre une barre de progression sur cet écran de démarrage.

J'ai créé un résumé ici : https://gist.github.com/voliva/eb0242743661000896054601af72d1fd

Juste pour donner à tout le monde une mise à jour, nous y travaillons activement. Cela a été un effort plus important que prévu, mais nous avançons et nous nous rapprochons. Nous avons une branche qui a presque deux cents commits en avance sur master qui a tous les changements nécessaires pour AoT 😄

Cela arrivera bientôt. Nous en sommes au point où nous commençons à tester cela en interne. Nous ne sommes pas encore prêts pour les tests publics. Il s'agit de notre plus haute priorité et toute l'équipe du framework travaille dur sur cet effort pour bien faire les choses. Pas de calendrier pour le moment, mais je peux dire que nous y arrivons et je continuerai à mettre à jour ce fil avec de nouvelles informations au fur et à mesure que nous les avons.

Merci,
Dan

+1

et mon app.bundle.js fait 3,8 Mo, trop gros...

+1
A quelle heure sortir la beta12? @danbucholtz

en ce qui concerne l'approche de @prijindal consistant à placer les modèles dans le composant, s'agira-t-il du même niveau d'optimisation attendu de la compilation hors ligne ?
J'ai essayé cette approche, cela économise le temps des requêtes HTTP pour récupérer le modèle, mais il y a toujours un décalage au premier chargement de la vue. Je suppose que cela se produit parce qu'angular compile le code HTML personnalisé des modèles lors du premier chargement de la vue.

Je suis assez nouveau sur angulaire et j'apprécierais si quelqu'un peut me clarifier cela.

@moatazelgamal ,

La compilation AoT entraînera une accélération significative. Il faut plusieurs secondes pour exécuter le compilateur pour une application typique à l'avance, ce temps est donc réduit à l'exécution. Il est difficile de dire à quel point ce sera plus rapide pour une application typique. Nous ne l'avons testé que sur un échantillon très basique et le temps de démarrage est passé de ~3 secondes à ~300ms. Nous n'avons pas fait suffisamment de tests pour savoir quel type de chiffres une application typique verra, mais ce sera très certainement plus rapide.

Les changements pour AoT sont en place pour le framework (nous pensons... jusqu'ici tout va bien 😄 ) et maintenant nous passons à rendre le processus de construction A) simple, B) évolutif et C) aussi rapide que possible. L'équipe et moi y travaillons ensemble dans ce repo .

Attendez-vous à en savoir plus bientôt.

Merci,
Dan

@moatazelgamal mon approche n'est pas une compilation hors ligne, il s'agit simplement d'intégrer des modèles.
La compilation hors ligne rendra le chargement initial beaucoup plus rapide.

Tous,

Nous testons fortement cela en interne maintenant. Nous avons fait de grands progrès cette semaine.

Merci,
Dan

Bonjour,
Je vois que Ionic2 RC0 est sorti, est-ce la bêta12 attendue ? Le journal des modifications de RC0 ne mentionnait rien à propos de la compilation AOT. Je pense que cette fonctionnalité est trop belle pour être manquée dans le changelog :)

Il a été libéré". Nous sommes toujours en train de combler les lacunes 😄 avec le journal des modifications, etc. Attendez-vous à des détails officiels plus tard dans la journée. Nous avons rencontré des difficultés techniques hier, nous sommes donc un peu en retard.

Merci,
Dan

Salut l'équipe Ionic! Merci pour votre travail acharné!

Tellement excité à ce sujet. Je ne peux pas arrêter de tweeter depuis que j'ai lu pour la première fois à ce sujet.
Bravo l'équipe ionique.

Le jeu. 29 septembre 2016, 04:19 gisinaction [email protected] a écrit :

Salut l'équipe Ionic! Merci pour votre travail acharné!

-
Vous recevez ceci parce que vous êtes abonné à ce fil.
Répondez directement à cet e-mail, consultez-le sur GitHub
https://github.com/driftyco/ionic/issues/6776#issuecomment-250346182 ,
ou couper le fil
https://github.com/notifications/unsubscribe-auth/AAxEjznTYrcKZKFD2rElIqKkWrGIvvUrks5quxIvgaJpZM4Iuokt
.

Tout d'abord merci pour cette belle avancée !
J'ai testé la nouvelle version et le chargement initial est maintenant plus rapide.

Je l'ai également testé dans un Android 4.4.4 bas de gamme pour mieux ressentir la différence de performances et le comparer à Ionic 1.
Avec Ionic 2-rc0, je trouve ces résultats approximatifs :

| Projet | Démarrage à froid | Démarrage à chaud |
| --- | --- | --- |
| ionic1-tabs | 4,5 s | 3 secondes |
| ionique2-tabs | 5 s | 3,5 s |
| ionic1-sidemenu | 5 s | 3,5 s |
| ionic2-sidemenu | 5 s | 3,5 s |
| horloge (application native) | 1 s | <1 s |

  • Projets créés avec ces commandes :
ionic start myTabs1 tabs
ionic start myTabs2 tabs --v2
ionic start mySidemenu1 sidemenu
ionic start mySidemenu2 sidemenu --v2

Bien que les projets ne soient pas exactement les mêmes implémentations, ils nous donnent un point de départ pour la comparaison.

Même avec ionic 2-rc0, les projets de base nécessitent environ 5 secondes pour se charger à froid, et environ 3,5 secondes lorsqu'il avait déjà été chargé auparavant. Ce sont à peu près les mêmes temps que je trouve avec les versions Ionic 1.
Le billet de blog qui présente Ionic2 RC0 contient un gif animé montrant le temps de chargement actuel. Environ 3 secondes.

Savons-nous où sont passées les secondes restantes ? (ex. Démarrage du moteur Javascript/webview, plugins Cordova, chargement d'Angular 2, ...) ?

Ces secondes peuvent-elles être optimisées pour avoir une expérience plus proche des applications natives ?

@SynerG , super info. Je suis un peu submergé par d'autres trucs en ce moment mais nous aurons bientôt plus de retours. Merci d'avoir rassemblé cela!

Merci,
Dan

J'ai créé un nouveau projet ionic2 rc-0 avec menu latéral. J'ai utilisé ionic serve --lab, et lorsque je clique sur l'icône à gauche de la barre d'en-tête, le menu ne s'affiche pas. uniquement lorsque je glisse ou que je clique sur le bouton de l'outil de menu qu'il glisse

@danbucholtz Je voulais remercier l'équipe Ionic pour la sortie de RC0 ! Même si j'ai dû investir du temps pour migrer mon application en raison de tous les changements, le temps de démarrage de mon application s'est considérablement amélioré ! Par exemple, sur un Samsung Galaxy 4 de 3 ans, le temps de démarrage avec la version bêta 11 était d'environ 6 secondes, que RC0 a réduit à environ 3 secondes ! C'est une belle amélioration donc bravo :)

@abhayastudios , w00t ! Merci!

Nous avons également plus d'améliorations et d'optimisations en magasin !

Merci,
Dan

Nous aussi, notre temps de chargement a été réduit d'environ 50%. Super travail les gars. Vraiment aimer travailler avec ce cadre.

Je sais que cela n'aide pas, mais je viens de plonger dans ionic et j'utilise 2.0.0-rc.2 , j'ai remarqué à quel point la charge initiale était lente par rapport à une application construite sur 1.1.1

@geocine J'ai remarqué la même chose, dans une ancienne application v1, le temps de démarrage est très bon mais alors que Ionic v2 fournit un environnement de programmation beaucoup plus agréable, les temps de démarrage sont très lents dans mon application (> 5 secondes dans la version construite sur un relativement appareil rapide avec Android 6.0). La version Webpack fait-elle trembler l'arbre ?

Si le chargement prend vraiment du temps, y a-t-il peut-être un moyen d'afficher au moins un écran de démarrage que je peux afficher en moins d'une seconde pendant le chargement ?

@geocine C'est pourquoi vous utilisez généralement le plug-in d'écran de démarrage cordova (https://github.com/apache/cordova-plugin-splashscreen) et le masquez surDeviceReady.

Existe-t-il un moyen simple de profiler l'heure de démarrage de l'application ? J'utilise le débogueur à distance Chrome pour profiler l'application, mais cela ne me permet de me connecter à l'application qu'une fois qu'elle est déjà initialisée (je ne peux donc pas profiler le démarrage) et elle se ferme lorsque je quitte l'application, donc je ne peux pas la relancer et profiler le démarrage de cette façon.

Je pose cette question car j'ai des problèmes avec le temps de démarrage de mon application sur Android, qui est supérieur à 5 secondes.
Même lorsque j'utilise l'application de tutoriel ordinaire Ionic 2, elle ne démarre qu'après 4 à 5 secondes sur un appareil relativement performant (Sony Z3 compact, 6.0.1).
C'est vraiment lent (mon ancienne application Ionic 1 avec quelques plugins prend moins de 3 secondes pour démarrer).

Existe-t-il des plans pour réduire (de manière significative) les temps de démarrage de l'application Ionic 2 ?
Développer avec Ionic 2 c'est bien, mais j'ai bien peur qu'autrement je doive passer à un autre framework :-(

Existe-t-il des plans pour ajouter la prise en charge du chargement paresseux, cela pourrait également être utile pour réduire le temps de chargement initial. Angular cli qui utilise webpack prend désormais en charge le chargement paresseux et avec AoT, une application angulaire bien conçue peut réduire considérablement le temps de chargement. Comme Ionic utilise également webpack, je pense que cela peut également être fait pour Ionic.

besoins urgents pour le chargement paresseux.

Le doc de la réunion de l'équipe ionique a déclaré qu'ils travaillaient en treeshaking , donc cela réduira probablement la taille du paquet et accélérera un peu le temps de démarrage.

Secouer les arbres est génial, mais cela ne peut pas faire grand-chose. Le chargement paresseux est une préoccupation distincte importante, et jusqu'à présent, l'équipe ionique n'a pas manifesté beaucoup d'intérêt à son égard selon les commentaires que j'ai vus dans d'autres problèmes (par exemple https://github.com/driftyco/ionic/issues/8102 ). Malheureusement, de nombreuses personnes semblent penser que cela n'est utile que dans les applications Web, même si cela peut également être incroyablement utile dans les applications mobiles.

@rob3c et autres,

Le chargement paresseux est quelque chose que nous examinons et que nous aimerions explorer davantage. Attendez-vous à en savoir plus sur ce sujet dans les mois à venir.

Merci,
Dan

@danbucholtz ,
Au-delà du lazy loading, explorez-vous d'autres solutions qui pourraient réduire considérablement le temps de démarrage ?

À l'heure actuelle, c'est la raison numéro 1 pour laquelle nous n'adoptons pas Ionic 2 dans les nouveaux projets.
Je ne sais pas si vous pourriez partager avec nous des informations sur ce qui est en cours.
Merci!

Eh bien, c'est un problème avec javascript en général et non spécifique à ionic. Il est intéressant de voir ce que font les autres frameworks à ce sujet. Par exemple, je suis tombé sur un article connexe sur le site Web d'un framework "concurrentiel" utilisant ce qu'on appelle la "mise en

Le temps de démarrage s'est considérablement aggravé après le passage d'Angular 2 aux modules en raison de l'AoT. Dans NativeScript, qui a également des problèmes de temps de démarrage long, il semble que tout va bien sans Angular 2 (https://github.com/NativeScript/nativescript-cli/issues/371). En juin, mon application démarrait relativement rapidement, mais après que Ionic 2 est passé à une version plus récente d'Angular 2, cela prend maintenant >= 5 secondes et c'est inutilisable pour la production. Êtes-vous au courant des améliorations d'Angular 2 en cours pour améliorer cela ou est-ce que le treeshaking et le chargement paresseux sont le seul moyen?

@Kobzol ,

C'est étrange, AoT entraîne certainement un temps de démarrage beaucoup plus rapide (généralement, de toute façon, je suis sûr qu'il y a des cas extrêmes).

@SynerG ,

Le temps de démarrage est assez rapide avec AoT. Tu es sûr que tu testais avec AoT ? Notre taille de paquet est encore relativement importante et nous travaillons à la réduire. Ce n'est pas complètement énorme, sauf si vous importez un tas de grandes bibliothèques. Souvent, les petites bibliothèques deviennent énormes en raison d'un tas de dépendances imbriquées.

Merci,
Dan

Je ne sais pas si je fais quelque chose de mal, mais j'ai essayé d'exécuter les versions AOT prod du modèle de démarrage du didacticiel Ionic 2 avec webpack et rollup et il faut > 5 secondes pour démarrer sur mon appareil (Sony Z3 Compact avec Android 6.0.1), alors qu'une ancienne application Ionic 1 démarre en 3 secondes.
Le démarrage s'est aggravé au cours des deux derniers mois, lorsque Angular 2 est passé au système de modules (la même chose s'est produite avec mon application nativescript, qui a ralenti après le changement d'Angular). Peut-être que le chargement paresseux pourrait aider avec cela.

Avez-vous des chiffres de référence que je pourrais utiliser pour la comparaison?

5 secondes, ce n'est pas si mal comparé à ce que j'ai vu. J'ai dû augmenter le délai d'expiration dans config.xml pour m'assurer qu'il n'expire pas (la valeur par défaut est de 20 secondes !).

C'était pour un appareil 4.4 plus lent cependant. Sur un Sony Xperia E5 avec 6.0, il faut encore 10-15 secondes.

iPhone 7 plus est inférieur à 2 secondes.

Quelle est la taille de vos paquets ? Utilisez-vous beaucoup de bibliothèques tierces ?

Merci,
Dan

Salut Dan !

Rien de bien fou je pense.

La taille de mon bundle avec webpack et AoT est de 1,9 Mo.

Dépôts dans package.json

...
  "dependencies": {
    "@angular/common": "2.2.1",
    "@angular/compiler": "2.2.1",
    "@angular/compiler-cli": "2.2.1",
    "@angular/core": "2.2.1",
    "@angular/forms": "2.2.1",
    "@angular/http": "2.2.1",
    "@angular/platform-browser": "2.2.1",
    "@angular/platform-browser-dynamic": "2.2.1",
    "@angular/platform-server": "2.2.1",
    "@biesbjerg/ng2-translate-po-loader": "^0.1.3",
    "@ionic/app-scripts": "0.0.46",
    "@ionic/storage": "1.1.6",
    "@ngrx/core": "1.2.0",
    "@ngrx/effects": "2.0.0",
    "@ngrx/store": "2.2.1",
    "angular2-uuid": "1.1.0",
    "ionic-angular": "nightly",
    "ionic-native": "2.2.7",
    "ionicons": "3.0.0",
    "ng2-translate": "^4.1.0",
    "ngrx-store-freeze": "0.1.4",
    "ngrx-store-logger": "0.1.7",
    "pofile": "^1.0.2",
    "rxjs": "5.0.0-beta.12",
    "zone.js": "0.6.26"
  },
  "devDependencies": {
    "@biesbjerg/ng2-translate-extract": "^0.1.1",
    "@ionic/app-scripts": "0.0.46",
    "@types/cordova-plugin-media": "0.0.3",
    "del": "^2.2.2",
    "fs": "0.0.1-security",
    "path": "^0.12.7",
    "typescript": "2.0.10"
  },
  "cordovaPlugins": [
    "cordova-plugin-device",
    "cordova-plugin-console",
    "cordova-plugin-whitelist",
    "cordova-plugin-splashscreen",
    "cordova-plugin-statusbar",
    "ionic-plugin-keyboard",
    "cordova-plugin-globalization",
    "cordova-plugin-media",
    "cordova-plugin-file",
    "cordova-plugin-compat",
    {
      "locator": "https://github.com/EddyVerbruggen/cordova-plugin-backgroundaudio",
      "id": "nl.x-services.plugins.backgroundaudio"
    },
    "cordova-plugin-app-version",
    "cordova-plugin-x-socialsharing",
    {
      "locator": "https://github.com/biesbjerg/cordova-plugin-inapppurchase.git",
      "id": "cordova-plugin-inapppurchase"
    },
    {
      "locator": "https://github.com/driftyco/cordova-plugin-wkwebview-engine.git",
      "id": "cordova-plugin-wkwebview-engine"
    },
    "cordova-plugin-google-analytics",
    "cordova-sqlite-storage"
  ],
...

Bonjour,
Je voudrais également partager mes propres informations avec l'heure de démarrage.
En fait, je mets mon ancien Ionic V1 à V2 (tout réécrit à partir de zéro).

Mon ancienne application avec passage piéton démarre (selon appareil) de 3 à 4 secondes.
La nouvelle application a besoin de 6 à 7 secondes (7 secondes sont plus probables).

J'ai essayé le RC3 ainsi que la version nocturne (Ionic Framework Version: 2.0.0-rc.3-201612021933)

Package.json:
{
  "name": "ionic-hello-world",
  "author": "Ionic Framework",
  "homepage": "http://ionicframework.com/",
  "private": true,
  "scripts": {
    "ionic:build": "ionic-app-scripts build",
    "ionic:serve": "ionic-app-scripts serve"
  },
  "dependencies": {
    "@angular/common": "2.2.1",
    "@angular/compiler": "2.2.1",
    "@angular/compiler-cli": "2.2.1",
    "@angular/core": "2.2.1",
    "@angular/forms": "2.2.1",
    "@angular/http": "2.2.1",
    "@angular/platform-browser": "2.2.1",
    "@angular/platform-browser-dynamic": "2.2.1",
    "@angular/platform-server": "2.2.1",
    "@ionic/storage": "1.1.6",
    "ionic-angular": "^2.0.0-rc.3-201612021933",
    "ionic-native": "2.2.3",
    "ionicons": "3.0.0",
    "moment": "2.15.1",
    "rxjs": "5.0.0-beta.12",
    "zone.js": "0.6.26"
  },
  "devDependencies": {
    "@ionic/app-scripts": "0.0.44",
    "typescript": "2.0.9",
    "webpack-bundle-analyzer": "^1.5.3"
  },
  "cordovaPlugins": [
    "cordova-plugin-whitelist",
    "cordova-plugin-statusbar",
    "cordova-plugin-console",
    "cordova-plugin-device",
    "cordova-plugin-splashscreen",
    "ionic-plugin-keyboard"
  ],
  "cordovaPlatforms": [],
  "description": "o2: An Ionic project"
}

Mon dossier d'actifs (plugins tiers / images) fait environ 2,14 Mo.
J'utilise 6 plugins tiers différents (jQuery, moment, hammer, jquery 3.1, fullcalendar, svg-panzoom, fontawesome).

La taille de l'APK est : 6,58 Mo
Décompressé, ce package fait : 15 Mo.

Pliant:

  • actifs : 10,1 Mo
    -> www/actifs : 2,93 Mo
    -> www/build : 7,07 Mo
    -> www/build/main.js : 3,003 Mo
    -> www/build/main.js.map : 3.790 Mo (est-ce nécessaire en production ?)
  • résolution : 1,73 Mo
  • class.dex : 3,07 Mo
  • resources.arsx : 0,13 Mo

Informations sur la version ionique :

Your system information:
Cordova CLI: 6.4.0
Ionic Framework Version: 2.0.0-rc.3-201612021933
Ionic CLI Version: 2.1.13
Ionic App Lib Version: 2.1.7
Ionic App Scripts Version: 0.0.44
ios-deploy version: Not installed
ios-sim version: Not installed
OS: Windows 8.1
Node Version: v6.9.1
Xcode version: Not installed

Peut-être que cela aide, si vous @danbucholtz / @jgw96 pouvez utiliser mon projet actuel pour déboguer ce problème, je serais heureux de le partager (privé).

Les salutations
Graphefruit

Je pense que les sourcesmaps devraient être désactivés pour la construction de production. Angular CLi a récemment ajouté une option pour la désactiver https://github.com/angular/angular-cli/pull/3262

Graphefruit, pouvez-vous également partager le nombre de composants et les directives de votre application ?

Bonjour @naveedahmed1 ,
nous y voilà:

  • prestations : 10
  • tuyaux : 3
  • pages : ~49
  • configuration personnalisée : 1
  • directives : 0 ( ;) )

Les salutations
Graphefruit

@naveedahmed1 Ce problème consiste à ne pas incorporer les sourcesmaps, ce qui, j'en conviens, n'est probablement pas la meilleure idée en production. Cependant, les fichiers de mappage externes pour les actifs de production peuvent être utiles et n'ajouter qu'un petit commentaire aux fichiers déployés. J'aimerais vraiment pouvoir générer des fichiers de carte externes pour les versions de production.

@rob3c ,

Il sera paramétrable.

Merci,
Dan

@danbucholtz , nous avons vraiment besoin d'améliorer le temps de démarrage. Même l'application de conférence ionique téléchargée depuis le Play Store prend 9 à 10 secondes sur mon Samsung Galaxy S4 Android Version 5.0.1.
Ceci est l'application que j'ai téléchargé --- https://play.google.com/store/apps/details?id=io.ionic.conferenceapp

Le temps de démarrage de mon application avec quelques pages est d'environ 7 à 8 secondes sur le même téléphone.

J'ai donc essayé de me joindre via Developer-Tools et j'ai obtenu un assez bon résultat chronologique.
Je n'ai pas pu suivre depuis le début à cause de la pièce jointe, mais vous voyez ce qui se passe :
image

Le script de compilation prend environ 500 ms, le script d'évaluation de 0 ms à 5000 ms.

Si besoin @danbucholtz @jgw96, je peux vous envoyer la chronologie enregistrée pour cela.

Comment avez-vous réussi à profiler cela? Je ne peux pas me connecter à l'application tant qu'elle n'est pas complètement démarrée.

BTW, je ne sais pas si c'est un bon résultat pour vous, mais malheureusement pour mon client, un temps de démarrage de 5/6 secondes est inacceptable.

@Kobzol ce n'est pas un bon résultat, la page a également besoin de 7s ~.
Ce que j'ai fait : ouvrez une page, consultez votre liste d'appareils ci-jointe, démarrez l'application normalement pour la première fois, ouvrez le commutateur "inspecteur" vers l'onglet chronologie
Fermez l'application maintenant, et l'inspecteur, redémarrez maintenant l'application, appuyez sur inspecter, appuyez sur le bouton d'enregistrement ultra rapide dans l'onglet chronologie ;)
Les 1-2 premières secondes lorsque l'application démarre, je ne peux pas m'attacher également, mais le reste est possible avec un peu de doigts rapides.

Mise à jour : avec Ionic1, j'ai obtenu un temps de démarrage de 3 à 4 secondes, ce qui était tout à fait acceptable pour moi

Vous construisez avec AoT ? Ces temps semblent lents.

Merci,
Dan

@danbucholtz , Dans mon cas, j'ai téléchargé ionic-conference-app depuis le Play Store, à peu près sûr que ce serait AOT compilé, veuillez consulter mes commentaires ici

@savanvadalia ,

Nous l'avons retiré du Play Store car il n'était en fait pas inclus dans l'AoT. Notre développeur a fait une erreur avant de publier. Nous republierons bientôt une nouvelle version.

Pouvez-vous installer la dernière version de la CLI ionique et des scripts d'application ?

npm install -g ionic<strong i="9">@latest</strong>
npm install @ionic/app-scripts<strong i="10">@latest</strong>

Et puis lancez ionic build android --prod --release ? Cela vous donnera une version AoT avec un APK optimisé. Il devrait démarrer beaucoup plus rapidement que 9 secondes, même sur un appareil lent.

Merci,
Dan

@Dan sur quels appareils testez-vous cela ? Même avec chaque paquet mis à jour, je ne peux pas descendre en moins de 6 secondes et d'après ce que j'ai vu ici, d'autres ont des expériences similaires.

Quelqu'un a-t-il réussi à installer les derniers scripts d'application ?

Problèmes de mise à jour :

Si j'essaie d'installer les derniers scripts d'application, j'obtiens l'erreur suivante : (j'ai installé ionic @latest avant)

C:\Users\graphefruit\Documents\o3>npm install @ionic/app-scripts<strong i="9">@latest</strong>
ionic-hello-world@ C:\Users\graphefruit\Documents\o3
`-- @ionic/[email protected]  invalid
  +-- [email protected]
  +-- [email protected]
  `-- [email protected]
    +-- [email protected]
    `-- [email protected]

npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@^1.0.0 (node_modules\ch
okidar\node_modules\fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@
1.0.15: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"
})

Après cela, j'ai commencé un nouveau projet complet, ionic start o4 --v2 avec la même erreur.

Peut-être que je ne reçois pas le mécanisme de mise à jour - dois-je me saisir dans le dossier package.json , ou dois-je supprimer le dossier node_modules ?
J'ai essayé de mettre à jour les scripts d'application définis manuellement et d'exécuter npm install, mais il s'est écrasé.
Ni le package.json n'a été mis à jour automatiquement vers 0.47

Je construis donc le projet maintenant avec 0.0.45 et --prod --release

_ Et le temps de démarrage était également de 7-8s. _

@danbucholtz Je pense que j'ai toujours utilisé AOT jusqu'à présent, car je me souviens avoir vu des fichiers ngfactory quelque part. Je suis encore un peu réticent à passer à une version plus récente du script d'application, car ma version actuelle 0.0.46 faisait un travail décent pour moi. Mais de toute façon, je vais vous croire sur parole et mettre à jour à 0.0.47 et vous faire savoir ce qui se passe.

Savane

@danbucholtz J'ai mis à jour les derniers scripts d'application ionique et j'ai commencé à recevoir cette erreur (voir capture d'écran ci-dessous).
De plus, j'ai strictement suivi la procédure de mise à niveau mentionnée dans les notes de version.

Pourriez-vous s'il vous plaît aider avec cela?

image

Merci
Savane

@graphefruit Je n'ai eu aucun problème avec l'installation du dernier ionic-cli et l'installation des packages npm au niveau du projet. J'espère que vous suivez la procédure de libération ici . Mais, comme je l'ai mentionné ci-dessus, j'obtiens une erreur d'exécution différente "Valeur inattendue 'undefined' déclarée par le module 'AppModule'".

Aussi, exécuter 0.0.45 avec --prod --release n'aidera pas. Dan a demandé de l'exécuter avec la version 0.0.47 à partir de 0.0.47 et à partir de là, ce sera le moyen de générer une version de production. Avec les versions précédentes de ionic-app-script, ionic run android générait la version de production par défaut.

@savanvadalia Merci pour vos commentaires, dans la procédure, il n'y a pas grand-chose d'écrit.
J'ai aussi commencé un nouveau projet, et j'ai fait npm install -g ionic@latest auparavant.
Vous venez donc d'exécuter les deux commandes dans votre dossier de projet ? Ou as-tu fait quelque chose de particulier ?
Comme je l'ai dit, j'ai déjà essayé de supprimer le dossier node_modules , et j'ai fait npm-install par la suite.
Mais à mon avis, cela n'aidera pas si le package.json n'est pas mis à jour vers la dernière version des scripts d'application. 0.47 mais quand je le fais manuellement, ça plante encore plus...

Normalement, ils publient dans le journal des modifications le dernier package.json et ce qu'il faut mettre à jour.

Update, a finalement réussi à le résoudre avec ces commandes :

npm install ionic-angular<strong i="18">@nightly</strong> --save
npm install @ionic/app-scripts<strong i="19">@latest</strong> --save-dev

Que la construction commence.

Test de construction

Donc, la construction s'est déroulée, fait amusant - j'avais besoin de "strg + c" car ngc-started a été affiché pendant plus de 10 minutes, après cela, la construction a continué, la deuxième fois, elle s'est exécutée sans aucun problème.

Taille : 9,2 Mo
Le main.js.map existe toujours lors de la construction pour la production

Le démarrage de l'application a besoin de 7 à 10 secondes (selon l'appareil), il semble donc que cela ait été pire qu'avant.
(Remarque 1, Remarque2)

Sur un Google Pixel XL, le temps de démarrage était d'environ 4,5 à 5 secondes
Par rapport à mon ancienne version de l'application, il est toujours plus lent de 1 à 2 secondes (temps de démarrage de 3,5 secondes)

Your system information:

Cordova CLI: 6.4.0
Ionic Framework Version: 2.0.0-rc.3-201612142137
Ionic CLI Version: 2.1.17
Ionic App Lib Version: 2.1.7
Ionic App Scripts Version: 0.0.47
ios-deploy version: Not installed
ios-sim version: Not installed
OS: Windows 8.1
Node Version: v6.9.1
Xcode version: Not installed

Mise à jour 2 :

Je viens de comparer les tailles de l'ancienne version avec 0,45 et avec 0,47 - le main.js a (presque ~ 10 Ko) la même taille - 3 Mo. - Je ne sais pas si cela devrait également être affecté.

Mise à jour3 :

C'est le meilleur instantané après 15 minutes d'essai pour le chargement :
image

@danbucholtz J'ai réussi à résoudre moi-même l'erreur d'exécution, elle était liée aux barils angulaires. Je devais référencer les modules avec le chemin complet dans le fichier app.module.ts. Je ne sais pas pourquoi cela a commencé à échouer avec la nouvelle version du script !!

Cependant, après avoir corrigé l'erreur et exécuté ionic run android --prod --release sur mon Samsung Galaxy S4 Android Version 5.0.1, le chargement initial est toujours de 7 à 8 secondes. Il n'y a aucun changement dans l'initiale après sa mise à jour vers les dernières versions de ionic-app-scripts.

Nous devons vraiment améliorer le temps de chargement initial. Personnellement, je ne pense pas que le téléphone et la version Android que j'utilise soient relativement vieux pour avoir un temps de démarrage aussi lent. Je serais heureux quelque part entre 3 et 4 secondes de démarrage sur les anciens téléphones de milieu de gamme.


@graphefruit , j'ai fait 2 étapes non mentionnées dans la procédure de sortie
1) J'ai modifié manuellement le fichier package.json pour changer la version du script en 0.0.47 , puis j'ai exécuté npm install.
2) J'ai également supprimé le répertoire .tmp qui n'est pas valide avec le nouveau processus de construction conformément aux notes de version.

En dehors de cela, je viens de suivre la procédure de libération.

Utilisez-vous le dernier ionic cli ? Pouvez-vous vérifier? npm install -g ionic@latest .

Pouvez-vous exécuter npm run ionic:build --aot et vérifier que ngc est exécuté dans le terminal ? Lorsque vous exécutez ionic run android --prod --release , voyez-vous ngc dans le terminal ?

Merci,
Dan

Bonjour @danbucholtz ,

oui, je vois ngc lors de l'exécution de --prod --release.
De plus, j'ai installé ionic @latest plus de 4 fois ;) via cmd sans aucune erreur - nous devons peut-être modifier certains paramètres dans le package.json - ils n'étaient pas mis à niveau seuls.
J'ai également installé le nightly pour peut-être voir une différence.

L'autre commande que je peux essayer d'exécuter demain matin.

Les salutations
Graphefruit

@danbucholtz

Oui, j'utilise la dernière version d'ionic-cli (veuillez consulter les informations sur l'environnement de mon espace de travail à la fin)
Je vois également le ngc dans le terminal dans les deux cas que vous avez mentionnés s'il vous plaît voir la capture d'écran pour chacun d'eux
1) npm run ionic:build --aot
2) ionic run android --prod --release

1) Aot construire
image

2) Génération de production lors de l'exécution sur l'appareil

image

Toujours pas de différence dans les temps de chargement initiaux pour moi dont 7-8 secondes 😞 😞

cordova CLI: 6.4.0
Ionic Framework Version: 2.0.0-rc.3
Ionic CLI Version: 2.1.17
Ionic App Lib Version: 2.1.7
Ionic App Scripts Version: 0.0.47
ios-deploy version: Not installed
ios-sim version: Not installed
OS: Windows 10
Node Version: v6.9.1
Xcode version: Not installed

Le temps de chargement long de

Il est également logique de passer au RC4 ionique-angulaire.

@danbucholtz Care, ce post sera un peu plus long :

Mon/Projet personnalisé

npm run ionic:build --aot
image

ionic run android --prod --release
image

ionic build android --prod --release
image

Encore 10 secondes de temps de chargement.

Starter-App

@astec Après avoir demandé, j'ai installé l'application de démarrage.
Et fait la même chose ici.

  1. npm install -g ionic@latest
  2. ionic start o5 --v2
  3. ionic info
Your system information:

Cordova CLI: 6.4.0
Ionic Framework Version: 2.0.0-rc.4
Ionic CLI Version: 2.1.17
Ionic App Lib Version: 2.1.7
Ionic App Scripts Version: 0.0.47
ios-deploy version: Not installed
ios-sim version: Not installed
OS: Windows 8.1
Node Version: v6.9.1
Xcode version: Not installed
  1. ionic platform add android
  2. npm run ionic:build --aot
    image
  3. ionic run android --prod --release
    image

  4. Fois:
    7.1 Note 1 - Android 4.1 - Le projet de démarrage a pris environ 5 à 5,5 secondes
    7.2. Remarque 2 - Android 7.0 (CM14) - Le projet de démarrage a pris environ 5,5 à 6,5 secondes

Conférence - Application

Alors essayez ensuite car j'ai téléchargé l'application de démarrage : https://github.com/driftyco/ionic-conference-app

  1. npm install
  2. ionic info
    image

-> On dirait que celui-ci n'est pas sur rc.4, à cause de cela

  1. J'ai modifié le package.json comme mentionné dans le journal des modifications.
"dependencies": {
  "@angular/common": "2.2.1",
  "@angular/compiler": "2.2.1",
  "@angular/compiler-cli": "2.2.1",
  "@angular/core": "2.2.1",
  "@angular/forms": "2.2.1",
  "@angular/http": "2.2.1",
  "@angular/platform-browser": "2.2.1",
  "@angular/platform-browser-dynamic": "2.2.1",
  "@angular/platform-server": "2.2.1",
  "@ionic/storage": "1.1.6",
  "ionic-angular": "2.0.0-rc.4",
  "ionic-native": "2.2.11",
  "ionicons": "3.0.0",
  "rxjs": "5.0.0-beta.12",
  "zone.js": "0.6.26"
},
"devDependencies": {
  "@ionic/app-scripts": "0.0.47",
  "typescript": "2.0.9"
}
  1. supprimé node_modules
  2. npm install
  3. ionic info
    image
  4. ionic platform add android
  5. npm run ionic:build --aot
    image
  6. ionic run android --prod --release
    image
  7. ionic build android --prod --release
    image
  8. Heures de démarrage
    11.1 Remarque 1 - Android 4.1 - 7-8s
    11.2 Note 2 - Android 7 (CM 14) - 7 - 8,5 s

Le temps a été mesuré en "cliquant sur l'icône de l'application" jusqu'à ce que l'écran apparaisse avec le contenu
Ainsi, même l'application de conférence avec la dernière version a besoin de 7 à 8 secondes, ce n'est donc pas un projet de version personnalisée.
Même ainsi, l'application de conférence est encore très petite, sans grande activité Internet ni système de fichiers html-5.

J'espère que cela t'aides.
Les salutations
Graphefruit

@ jgw96 , pouvez-vous peser sur ce qui précède ? Justin est notre expert Android résident. Ma pensée initiale est que ce sont de très vieux téléphones (7 générations) et cela pourrait jouer un rôle, mais je m'en remettrai à Justin.

Merci,
Dan

FWIW J'ai Sony Compact Z3, qui n'est pas vraiment vieux et les temps sont à peu près les mêmes sur Android 6.x.

@jgw96 @danbucholtz Je l'ai également installé sur mon Google Pixel - le temps de démarrage de l'application de conférence - a pris 3,5 à 4 secondes.
Fait amusant : j'ai eu des temps de démarrage 10 fois à 8-10 secondes - puis j'ai supprimé et réinstallé l'application, et le temps est à nouveau descendu à 3,5 à 4 secondes.

@graphefruit oui, mais la réinstallation ne peut pas être la bonne méthode. ;-)
Le profilage serait intéressant, si tant de temps est consacré et à quelle vitesse d'autres frameworks (angulaires) (Ionic 1, OnsenUI, etc.) démarrent une simple application "hello world" sur le même appareil.
Le temps de démarrage de l'application RC4 conf sur mon (pas trop vieux) Moto G2 est d'environ 6 secondes :-/

@mpaland C'est vrai, ce ne sera pas la bonne façon, mais parfois, fournir toutes les informations que vous avez trouvées est la meilleure façon et j'espère que ionic pourra les utiliser.
Comme je l'ai mentionné dans certains articles plus tôt - je porte mon application Ionic1 sur Ionic2, il y avait un temps de démarrage de 3 à 4 secondes maximum.
Le projet porté prend 7 à 8 secondes sur le même appareil.

HTC One M8 (Android 6.0 - Vanille)

Donc, après votre suggestion, j'ai installé un projet Ionic1 :

  1. ionic start myproject
  2. ionic platform add android
  3. ionic build android
  4. Ionic1 - L'heure de démarrage sur HTC One M8 (Android 6.0) était d'environ 2,5 secondes.
  5. Ionic 2 - App Conférence - Heure de début : 5 secondes
  6. Ionic 2- Starter App - Heure de démarrage : 4 secondes
  7. Ionic 1 - Mon projet personnalisé : 4 secondes
  8. Ionic2 - Mon projet personnalisé : 7 sec.

Choc! - Ignorez cette phrase.

Donc, même avec l'application de démarrage dans ionic 2, la différence est toujours d'environ 1,5 seconde
Le HTC One M8 est sorti en mars 2014

Moto G (Android 5.1)

Alors et c'est parti avec un prochain appareil - Moto G - Android 5.1.

  1. Ionique1 - 4,5 à 5,5 s s
  2. Application Ionic 2- Conférence : 8,5 à 10,5 s
  3. Ionic 2 - Application de démarrage : 6 à 6,5 s
  4. Ionic 1 - Mon projet personnalisé - 5.5 - 6 sec
  5. Ionic 2 - Mon projet personnalisé - 7-8 sec.

Donc comme vous le voyez, nous avons encore 1,5 sec de différence, l'application de conférence a eu besoin de beaucoup plus de temps
Le Moto G est sorti en novembre 2013

Je pense donc que cela devrait répondre à toutes les questions maintenant.

_Et oui : chaque projet dans ionic2 a été compilé avec RC4 et appscripts 0.0.47 - avant que quiconque ne le demande_

Utilisez-vous la dernière Ionic CLI ? Quelle est la taille de votre paquet ? Pouvez-vous le compiler avec seulement npm run ionic:build --aot et vérifier que platformBrowserDynamic n'y figure PAS ? --aot devrait ignorer la minification mais vous donner toujours la version AoT.

Merci,
Dan

@danbucholtz Je vais vérifier et vous donner une mise à jour dans 15 minutes... - J'ai peut-être fait des erreurs, trop de compilations au cours des 2 dernières heures pour ce post =/ désolé

Gardez à l'esprit que platformBrowserDynamic doit essentiellement exécuter ngc dans le navigateur lorsque l'application démarre. En fin de compte, que vous fassiez de l'AoT ou non, vous utilisez toujours les fichiers .ngfactory.js` dans le navigateur. Cela prend environ 20 secondes dans vos messages précédents. Donc 20 secondes de compilation dans le navigateur + 5 secondes de démarrage = temps long.

5 secondes, c'est quand même très long. Quelque chose ne va pas là-bas.

Merci,
Dan

@danbucholtz Re- bonjour dan ! Je suis désolé. J'ai installé les derniers scripts, mais le npm run ionic:build --aot n'était pas disponible sur mon projet personnalisé. - J'ai déjà mis à jour mon message en haut.

J'ai donc créé un nouveau projet maintenant, compilé et signé, et maintenant le temps de démarrage est revenu à 7 secondes.

_J'aime mentionner que toutes les autres vérifications_ - l'application de conférence/démarreur étaient toutes avec ionic:build --aot et je peux vérifier que platformBrowserDynamic y est NOT .
J'ai extrait tous les ZIPS et jeté un œil à main.js .

Encore pardon.

@graphefruit un gros effort pour produire de telles statistiques sur une variété d'appareils 👍
@danbucholtz @jgw96 , comment abt Ionic Team publie la version de production de ionic-conference-app sur Play Store et nous pouvons télécharger pour vous fournir quelques statistiques sur le chargement initial.

Si nos temps de chargement ne correspondent pas, nous faisons peut-être quelque chose de mal avec notre version, ce dont je doute vraiment que ce soit le cas.

@danbucholtz C'est comme ça depuis RC.0, je doute que quiconque ait pu démarrer en moins de 5 secondes sur Android. Les temps de démarrage d'Ionic 1 sont meilleurs que ceux d'Ionic 2.

Pourriez-vous s'il vous plaît l'examiner et faire un peu de profilage ?
Je sais que vous essayez d'abord de vous assurer que nous utilisons la bonne procédure pour créer l'application, mais ce problème n'a pas beaucoup bougé au cours des derniers mois et lorsque plusieurs utilisateurs le signalent, cela ne sera probablement pas causé par une mauvaise utilisation du script de construction.
Cinq (et c'est le meilleur scénario ici) ou plus de secondes pour commencer est un spectacle pour à peu près n'importe quelle application Android.

Mes statistiques :
Sony Z3 Compact Android 6.0.1 - AOT/prod/minified build (ensemble 2 MiB JS) prend 6 secondes pour démarrer avec et sans Crosswalk. Sur les appareils plus lents, cela prend beaucoup plus de temps (10 secondes et plus ont été signalées par les utilisateurs qui ont testé mon application).

@danbucholtz Cela vous

Salut tout le monde, merci beaucoup pour les diagnostics détaillés et les informations sur les tests. C'est notre priorité n°1 en ce moment, et bien que certains d'entre nous ici ne voient pas certains des longs temps de chargement, d'autres dépendent de l'appareil/du système d'exploitation/etc. Nous le réduisons, toute information supplémentaire que vous avez est toujours la bienvenue.

@mlynch Bien que ce ne soient pas les 5 secondes manquantes, cela pourrait peut-être valoir la peine d'être économisé

https://github.com/driftyco/ionic-storage/issues/54

J'ai l'impression que l'une des bibliothèques ioniques (stockage) s'initialise deux fois ..... (plutôt qu'une). Je peux me tromper, mais quand même, tout en cherchant des gains de performances de démarrage, je le soumets à l'examen, surtout s'il y a un problème plus large ici

Bonjour,
J'ai testé un autre appareil :

Nexus 7 (2012) - Android 4.1

Ionic 1 - Starter-App : 4 sec
Application Ionic 2- Conférence : 7 sec
Ionic 2 - Application de démarrage : 5,5 secondes
Ionic 1 - Mon projet personnalisé - 5,5 sec
Ionic 2 - Mon projet personnalisé - 8.5 sec

Peut-être que je peux fournir ce soir un autre test à partir d'un Ulefone-Metal avec Android 6.0.

Les salutations
Graphefruit

Après avoir mis à niveau Ionic vers 2.1.17 et exécuté ionic run android --prod les performances ont été considérablement améliorées et mon application démarre dans les 2 à 3 secondes. Je ne sais pas ce qui a été changé mais j'en suis très content. :souriant:

@PrithiviRajG Pourriez-vous s'il vous plaît partager plus d'informations?

  1. Quelle est la taille de votre application ?
  2. ionic info - Informations
  3. package.json - Informations
  4. plugins installés / bibliothèques tierces
  5. Quel appareil utilisez-vous ?
  6. Pouvez-vous aussi le tester avec les starter-app et ionic conference app ?
    Merci d'avance
    Graphefruit

@graphefruit

  1. Ma taille Apk est de 7 Mo, la taille du dossier WWW est de 7,88 Mo, le dossier des plugins est de 67,1 Mo, le dossier des ressources est de 1,01 Mo
  2. ionic info
 ordova CLI: 6.4.0
Ionic Framework Version: 2.0.0-rc.2
Ionic CLI Version: 2.1.17
Ionic App Lib Version: 2.1.7
Ionic App Scripts Version: 0.0.39
ios-deploy version: Not installed
ios-sim version: Not installed
OS: Windows 7
Node Version: v6.7.0
Xcode version: Not installed

  1. package.json
{
  "name": "ionic-app-base",
  "author": "Ionic Framework",
  "homepage": "http://ionicframework.com/",
  "private": true,
  "scripts": {
    "build": "ionic-app-scripts build",
    "watch": "ionic-app-scripts watch",
    "serve:before": "watch",
    "emulate:before": "build",
    "deploy:before": "build",
    "build:before": "build",
    "run:before": "build"
  },
  "dependencies": {
    "@angular/common": "2.1.1",
    "@angular/compiler": "2.1.1",
    "@angular/compiler-cli": "2.1.1",
    "@angular/core": "2.1.1",
    "@angular/forms": "2.1.1",
    "@angular/http": "2.1.1",
    "@angular/platform-browser": "2.1.1",
    "@angular/platform-browser-dynamic": "2.1.1",
    "@angular/platform-server": "2.1.1",
    "@ionic/cloud-angular": "0.5.2",
    "@ionic/storage": "1.1.6",
    "angular2-swing": "^0.10.0",
    "ionic-angular": "2.0.0-rc.2",
    "ionic-native": "2.2.3",
    "ionicons": "3.0.0",
    "rxjs": "5.0.0-beta.12",
    "zone.js": "0.6.21"
  },
  "devDependencies": {
    "@ionic/app-scripts": "0.0.39",
    "typescript": "2.0.3"
  }
}

  1. Plugins installés
cordova-plugin-device
cordova-plugin-facebook4
cordova-plugin-googleplus
cordova-plugin-nativeaudio
cordova-plugin-splashscreen
cordova-plugin-statusbar
cordova-plugin-whitelist
ionic-plugin-keyboard
angular2-swing
  1. Informations sur l'appareil : MOTO G 1ère génération - Android 5.1

    1. testera l'application de démarrage et la conférence ionique sous peu et vous en informera.

@PrithiviRajG Merci pour vos informations. il semble que vous n'êtes pas sur la dernière version :

Cordova CLI: 6.4.0
Ionic Framework Version: 2.0.0-rc.2
Ionic CLI Version: 2.1.17
Ionic App Lib Version: 2.1.7
Ionic App Scripts Version: 0.0.39
ios-deploy version: Not installed
ios-sim version: Not installed
OS: Windows 7
Node Version: v6.7.0
Xcode version: Not installed

-> Vous utilisez RC2 et non RC4 - les scripts ioniques sont également maintenant sur 0.0.47.

Mais peut-être est-ce une indication pour @jgw96 ?

Bonjour,
J'ai testé un autre appareil :

Ulefone Métal (Android 6.0)

Ionic 1 - Starter-App : 3,5 sec
Application Ionic 2- Conférence : 5 sec
Ionic 2 - Application de démarrage : 4,5 - 4,7 secondes
Ionic 1 - Mon projet personnalisé - 5 sec
Ionic 2 - Mon projet personnalisé - 7 sec

Les salutations
Graphefruit

@mlynch Par curiosité, je veux juste savoir que le temps de chargement initial s'améliore,
sera-t-il corrigé dans le cadre du travail actuel de

J'ai appris à connaître le travail de Dan grâce aux notes de réunion, j'adore travailler avec vous les gars. Je ne peux pas croire à quel point l'équipe est transparente avec le travail de cadre. :cœur:

@savanvadalia ,

Nous n'aurons jamais fini d'essayer de rendre Ionic plus rapide.

À l'heure actuelle, nous nous concentrons sur le bon fonctionnement de l'arborescence et sur la prise en charge du compilateur de fermeture. La fermeture peut produire des bundles JS beaucoup plus petits que les alternatives, ce qui entraîne des temps de chargement plus rapides. Nous étudions également le fractionnement du code en ce moment pour réduire le temps nécessaire pour charger et analyser le javascript.

Merci,
Dan

@danbucholtz Super d'entendre ça. Comment puis-je contribuer aux fonctionnalités d'accélération ?

J'évalue actuellement les technologies front-end et mobiles pour de nouvelles lignes de produits à long terme dans le domaine de la finance à la consommation. La performance de chargement initial est un facteur de décision essentiel.

D'après les récents tests d'applications à petite échelle, les performances iOS/Android sont acceptables. Les performances de chargement du navigateur sont également assez bonnes : je présenterai le rendu côté serveur plus tard. Le plus préoccupant réside dans les performances de chargement initiales lorsque nous commençons à introduire plus de pages et de modules tiers.

Existe-t-il un moyen d'afficher un écran de démarrage ou une progression du chargement initial de l'application Ionic2/Webview ?

Ils en moyenne. le temps que l'application prend pour se charger pour moi est d'environ 10 secondes. Cela rend l'expérience utilisateur mauvaise lorsque les gens doivent attendre environ 10 secondes juste pour charger l'application. Mon application n'est pas grande cependant.

J'utilise npm run ionic:build --aot et ionic run android --prod pour exécuter sur l'appareil, et le temps initial de l'application de démarrage est d'environ 2 secondes, mais lorsque j'utilise mon propre projet, il vient

Erreur non détectée : impossible de trouver le module "./app.module.ngfactory"

J'ai supprimé node_modules et www, mais cela ne fonctionne pas.
quand je viens d'exécuter ionic run android , mon projet fonctionne mais le temps initial est d'environ 7-8 secondes

voici mes infos ioniques

CLI de Cordoue : 6.4.0
Version du cadre ionique : 2.0.0-rc.4
Version Ionic CLI : 2.1.18
Version de l'application Ionic Lib : 2.1.9
Version des scripts d'applications ioniques : 0.0.48
version ios-deploy : non installée
Version ios-sim : Non installé
Système d'exploitation : Windows 10
Version du nœud : v6.6.0
Version Xcode : Non installé

mettre à jour
problème résolu en rétrogradant le tapuscrit à "2.0.9"

Quoi que je fasse, l'appareil se déclenche après 5 secondes.

Tous,

Pour donner une mise à jour, nous avons apporté des améliorations significatives au framework lui-même pour améliorer le tremblement de l'arbre et la suppression du code mort. Nous avons expérimenté le fractionnement de code et le compilateur de fermeture et avons considérablement réduit la taille du paquet dans ces cas. Expérimenter est le mot clé et il faudra un peu avant que nous ayons quelque chose de prêt pour les heures de grande écoute. Nous travaillons en étroite collaboration avec l'équipe Angular sur ce sujet.

Closure Compiler est un outil incroyable, mais il peut casser de nombreuses bibliothèques tierces ou même votre propre application si vous ne suivez pas les règles. Nous travaillons donc à créer une expérience de développement simple mais robuste et flexible autour de cela.

La réduction de la taille du paquet, la division du code et l'amélioration de la vitesse de lancement sont notre priorité n°1.

Merci,
Dan

@danbucholtz c'est super ! J'ai suggéré un compilateur de fermeture à l'équipe Angular CLI dans le passé. Peut-être qu'un commutateur pourrait être introduit pour rendre la compilation à l'aide du compilateur de fermeture facultative. Ceux qui ont un code convivial pour le compilateur de fermeture qui peut l'activer, rest peut le compiler de manière standard. L'équipe Ionic pourrait s'assurer que la bibliothèque Ionic principale et Ionic native sont entièrement compatibles avec le compilateur de fermeture. BTW aimeriez-vous partager quelle est la meilleure vitesse de lancement que vous pouvez atteindre avec/sans compilateur de fermeture ?

http://hybridtonative.com , NativeScript est encore immature, mais il devient de plus en plus attrayant à mesure que les problèmes ioniques continuent d'affluer, que les tickets ouverts persistent ou augmentent et que la technologie Webview tourne sur elle-même, obligeant les développeurs à travailler sur la technologie au lieu de travailler avec ça. Même les tâches de base exigent une énorme quantité de solutions de contournement, la recherche de problèmes, nécessitant beaucoup de mises à jour de code, les modifications et les mises à jour suivantes, laissant la production sur une base boueuse de polissage sans fin qui est en fait une correction de bugs de mauvais choix de conception corrigeant d'autres mauvais choix de conception. En fin de compte, nous en payons le prix et cela devient comparable au développement d'applications nativement sur iOS et Android.

@barocsi hyperbole beaucoup? Vous réalisez qu'Angular 2 et ionic sont à la pointe de la technologie avec laquelle ils travaillent et qu'ils travaillent à trouver le meilleur plan d'action possible pour nous, les développeurs ? Gardez également à l'esprit que la v2 stable n'est pas encore sortie.

@barocsi Si vous n'êtes pas satisfait d'Ionic2, utilisez Ionic1 ou écrivez votre propre application angulaire.
Même avec votre propre application angulaire, vous rencontrerez déjà de nombreux problèmes qui résolvent déjà ioniquement dans leur cadre.
De plus, ce framework est open source et vous pouvez y contribuer ; si vous avez des problèmes avec la vitesse à laquelle ils travaillent, ou vous pouvez le fork et créer votre propre ionic2-fork.
Je ne veux pas discuter ou casser quelque chose de la clôture, même si Ionic2 a une version candidate, elle vient de sortir du cycle de version bêta.
Alors s'il vous plaît donnez-lui un peu de temps, et si vous ne pouvez pas attendre, prenez ionic1 et utilisez le passage pour piétons, qui a déjà pris quelques années sur ce marché

Merci pour les suggestions, je m'interroge sur les alternatives pour les décisions actuelles et futures. Nous avons déjà des applications Ionic V1 et V2 robustes et lourdes ainsi que près d'un an et demi de lutte et de contribution à des problèmes partout dans ce référentiel github. Même s'il s'agit d'un fil pro-ionique, nous devons anticiper la direction que prend cette technologie, même si quelque chose est étiqueté comme étant à la pointe de la technologie par

Je peux comprendre vos préoccupations, c'est pourquoi j'ai utilisé des angularjs simples dans ma propre application lourde.
Le problème est que je suis toujours tombé sur de nombreux problèmes, car si vous n'écrivez pas tout vous-même ou à partir de zéro, vous y arriverez tôt ou tard.
J'ai eu de gros problèmes avec Angular-Material V1 (performances par exemple) et j'avais besoin de creuser moi-même dans le framework, le reste était écrit moi-même en angularjs.
Mais même là, je suis arrivé au point où des problèmes de performances sont apparus.
J'ai donc dû passer du temps sur mon "propre" framework pour les trouver et essayer de les corriger.
Je peux donc comprendre Ionic avec leurs problèmes, car je suis moi-même tombé dans ces problèmes.
Même s'il s'agit d'une grande entreprise, ils disposent également de ressources limitées.

La prochaine chose est que Ionic2 n'est pas seulement une application, il fournit également un site Web, il prend également en charge UWP (et c'est beaucoup de douleur) et il prend également en charge PWA.
Tant de nouvelles fonctionnalités dans un cadre, qui est principalement utilisé pour les applications, mais prend également en charge de nombreuses autres choses.
Avec ces fonctionnalités, il y a beaucoup de dépendances et beaucoup de problèmes lors de l'exploration de celles-ci.
Mais vos préoccupations sont éligibles, mais je vois plutôt les problèmes dans la toute nouvelle technologie qui a été lancée sur le marché et Ionic essaie de les saisir et obtient beaucoup de dépendances avec elle.

@danbucholtz

Dan, extrêmement encouragé par vos commentaires sur les « expérimentations » sur le fractionnement de code, le compilateur de fermeture, le tremblement de l'arbre et que la vitesse de lancement est la priorité actuelle n° 1 pour ionic2 (4 janvier). L'exemple d'application de conférence ionic2 sur Github est une bonne application de référence simple que tous peuvent utiliser pour comparer vos progrès. J'espère que votre travail avance bien (et rapidement). Vous avez vraiment besoin d'un temps de démarrage de <= 3 secondes ces jours-ci ou les utilisateurs sont susceptibles de « partir » - plus de 6 secondes et ils « partiront » définitivement pour de bon.

Construit à l'aide de --prod et lancé sur mon Nexus 7 (2013) Android 6.0.1, l'application de conférence prend actuellement environ 8 secondes pour se lancer (moyenne chronométrée par chronomètre sur plusieurs lancements).

Alors, encore pas mal de chemin à parcourir, je vous souhaite plein succès !!! - d'autant plus que j'aime beaucoup la structure et les facilités fournies par ionic2 du point de vue d'un développeur expérimenté.

Phil

@barocsi Je peux comprendre votre situation et en ce moment c'est vraiment très décevant pour moi aussi.
Pour résumer : mon projet d'application doit s'exécuter sur Android, iOS et Win10 (ordinateur de bureau) et doit démarrer rapidement, 2 secondes maximum - même sur des appareils plus anciens (ce qui signifie 2 ans).
Je veux écrire en JS et HTML, en raison de beaucoup de bibliothèques et d'expérience. Cela réduit le champ aux applications WebView au lieu des applications natives (Java, Obj C).
J'ai besoin de certains accès HW, donc Cordova est un bon choix. NativeScript, Appcelerator, OnsenUI sans ng2 ... peut-être, mais je n'aime pas du tout l'idée.

Pour le moment, je blâme ng2 pour cette énorme taille de code et je ne sais pas si un compilateur d'arborescence et de fermeture approprié réduira considérablement le temps de démarrage (facteur 4 à 5 nécessaire) sur un projet plus important. Il faut attendre et voir...

@mpaland Avez-vous déjà utilisé Ionic1 ?
J'aimerais vraiment voir comment vous obtenez un temps de démarrage de 2 secondes - même sur des appareils plus anciens.
Mon projet personnalisé sans ionic1 a également besoin d'un temps de démarrage d'environ 3 secondes et voilà :

  1. index.html
  2. min.css
  3. min.js

Et c'est tout.

Avez-vous déjà accompli un temps de chargement aussi rapide avec cordova (angulaire, etc.) ?

@graphefruit , non, je n'ai pas essayé Ionic 1 et je n'ai encore rien essayé d'autre, car j'ai trouvé Ionic 2 le mieux adapté à mon projet. Comme je l'ai dit, je ne fais qu'évaluer les différentes options. Un WebView avec JS est toujours à mon humble avis _ma_ meilleure option. J'ai donc hâte que l'équipe ng et ionic progresse.

@graphefruit
J'espère vraiment que ionic2 atteindra enfin un démarrage de <=3 secondes, même sur des appareils plus anciens. Je peux déjà y parvenir avec un autre cadre hybride + cordova 'out of the box'. Cependant, je préférerais de loin utiliser ionic2 car il a un si bon pedigree construit sur angular2, ce qui lui donne à son tour un excellent support, une documentation, des installations, etc. - tout ce qu'un développeur expérimenté comme moi apprécie hautement.

@philrob Extrêmement curieux de savoir quel autre Hybrid Framework + Cordova (y compris tout ce dont vous auriez besoin pour votre projet) vous apporte moins de 3 secondes. S'il vous plaît, dites-le.

lordgreg
Pas vraiment un endroit approprié pour introduire d'autres cadres. J'espère juste que l'équipe ionic2 pourra réaliser une réduction significative du temps de lancement qui le rapprochera de mon aspiration de <=3 secondes.

salut
Mon application ionic2 prend encore 10 secondes pour se lancer.mais l'application ionic1 ne prend que 4 secondes.comment améliorer le temps de chargement initial.veuillez me suggérer.c'est très critique

@philrob Sérieusement, en vérifiant les autres commentaires, vous remarquerez rapidement qu'il y a toujours des comparaisons. Heck, même ce fil en a. Ce que vous dites n'est pas un mensonge, mais expliquer que votre application hybride qui n'exécute rien de plus que jQuery (exemple) dans le conteneur Cordova s'ouvre en moins de 3 secondes est totalement absurde. Utiliser le framework qui ne gère pas le style ou qui n'est pas au moins aussi complexe qu'Ionic, ou qui ne s'appuie sur aucune autre énorme bibliothèque (angular2), c'est comme comparer la nuit et le jour. Cela n'a pas de sens.

@mobinius-shreesha exécute le projet en tant que ionic build android --prod ou ionic run android --prod pour obtenir un temps de lancement de 5 secondes. l'exécution en mode débogage ionic run android augmentera le temps à plus de 10 secondes

lordgreg

Ne pensez pas que nous sommes en désaccord. C'est pourquoi j'ai délibérément choisi d'utiliser l'application de conférence ionic2 de Github (construite avec --prod) pour donner mon timing de lancement (~ 8 secondes) spécifiquement pour mon Nexus 7 (2013) Android 6.0.1. Clairement, si un autre framework peut atteindre un temps de lancement plus rapide sur le même équipement tout en fournissant les installations dont j'ai besoin (y compris des widgets mobiles d'interface utilisateur stylisés), alors POUR MOI, c'est pertinent,

JE RÉPÈTE - J'aime vraiment ionic2 pour toutes les autres raisons importantes que j'ai données auparavant, je veux juste voir la vitesse de lancement considérablement améliorée. Je pense que nous devons donner à l'équipe ionic2 le temps dont elle a besoin...

J'ai également hâte d'augmenter le temps de démarrage.

Je pense que l'équipe Ionic a fait un travail formidable avec la sortie de la version 1 de ionic-app-scripts la semaine dernière. Cela a amélioré le temps de construction massivement ici dans mon environnement.

Je suis sûr qu'ils feront de même avec le temps de démarrage de l'application.

Je pense que le problème est ailleurs : ionic v2 est à l'état rc. C'est ce que la plupart des développeurs doivent respecter, cependant : du côté de l'équipe Ionic, la documentation ionique suggère à tout nouveau venu que la v2 est quelque chose qui est prêt pour la production. Ne vous opposez pas c'est le cas. Même les documents sont maintenant par défaut en v2.

Ce comportement trompeur de l'équipe volontaire ou non est en quelque sorte le résultat de la pression de l'industrie. La seule durabilité d'Ionics dépend de la mise en place de quelque chose d'avancé qui a une grande base de développement (js + angulaire2) avant que la communauté ne passe à une autre technologie émergente multiplateforme, par exemple celle que j'ai mentionnée auparavant : Nativescript

L'équipe Ionic doit donc suggérer que la v2 est la version de facto d'Ionic. Mais le prix à payer peut être plus élevé dans ce cas : le déploiement d'un produit avec des pièces critiques dans des erreurs sans correction rapide entraîne une méfiance de la communauté, ce qui est parfois plus dangereux que d'attendre quelques mois de plus avant de positionner le produit comme un produit à la pointe de la technologie. mise à niveau majeure mature.

Les développeurs doivent produire et chaque pas en arrière ou manque de correctifs les amènera à se tourner vers d'autres solutions pour couvrir leur propre avenir et leur stabilité vis-à-vis de leurs clients.

Des mises à jour à ce sujet ? :)

@PrithiviRajG Merci pour votre réponse. Je peux lancer l'application dans les 10 secondes. Mais existe-t-il des mises à jour sur ionic2 pour améliorer le temps de démarrage. Lorsqu'ils envisagent de publier la version complète de ionic2. Avez-vous une idée.

14,99 secondes de démarrage à froid avec les plugins actuels installés et la version ionique actuelle :

com-badrit-base64 0.2.0 "Base64"
com.synconset.imagepicker 2.1.7 "ImagePicker"
Cordova-plugin-camera 2.3.1 "Caméra"
cordova-plugin-compat 1.1.0 "Compat"
cordova-plugin-console 1.0.5 "Console"
cordova-plugin-device 1.1.4 "Périphérique"
cordova-plugin-dialogs 1.3.1 "Notification"
cordova-plugin-nativetorage 2.2.0 "NativeStorage"
cordova-plugin-secure-storage 2.6.3 "SecureStorage"
cordova-plugin-spinner-dialog 1.3.1 "SpinnerDialog"
cordova-plugin-splashscreen 4.0.1 "Splashscreen"
cordova-plugin-statusbar 2.2.1 "StatusBar"
cordova-plugin-whitelist 1.3.1 "Liste blanche"
ionic-plugin-keyboard 2.2.1 "Clavier"

Vos informations système :

CLI de Cordoue : 6.4.0
Version du cadre ionique : 2.0.0-rc.1
Version Ionic CLI : 2.1.18
Version de l'application Ionic Lib : 2.1.9
Version des scripts d'applications ioniques : 0.0.48
version de déploiement d'ios : 1.9.0
Version ios-sim : Non installé
Système d'exploitation : macOS Sierra
Version du nœud : v6.9.2
Version Xcode : Xcode 8.2.1 Version de construction 8C1002

La version ionique actuelle de

Tout le monde, attendons la RC5 ou la sortie car il devrait y avoir beaucoup de changements à ce sujet.

Comment forcer une mise à jour ionique vers rc4 ? y a-t-il un autre élément obsolète qui pourrait être à l'origine de mon retard ?

Pour moi, un projet complexe dans ionic v1 faisait 1,8 Mo de build.js, avec la v2, un projet de base main.js dépasse 6,7 Mo.
L'ajout ou la suppression de plugins cordova n'affectant pas nécessairement le temps de démarrage.

Salut à tous! Nous allons clore ce problème et verrouiller le fil pour le moment. À ce stade, nous avons beaucoup travaillé pour améliorer les temps de chargement, la vitesse du framework et le faire fonctionner partout.

Ce sera toujours une cible mouvante et une chose à laquelle nous pensons constamment. Bien que ce problème ait été utile au début, il a depuis déraillé et n'est plus un problème clair à suivre. Si vous rencontrez d'autres problèmes, veuillez en ouvrir un nouveau, avec toutes les informations que nous vous demandons.

Cette page vous a été utile?
0 / 5 - 0 notes