2017-09-12 5 views
0

Nous passons de Railo à Lucee 5.2.3 et nous remarquons qu'il y a parfois une grosse latence au démarrage de la requête. Je pense que je l'ai réduit à une fonction qui charge environ 30 composants avec createObject('component', ...) dans la portée de la demande. Sur Railo, cette liste se chargera dans une seconde. Sur Lucee, cela peut prendre environ 20 secondes, mais pas toujours. Cela semble se produire de manière cohérente si nous devons créer dynamiquement une source de données ou nous connecter à une source de données autre que la source de données globale primaire pour l'environnement. Après le chargement initial de ces objets composants, il se chargera dans une seconde. Je n'arrive pas à comprendre ce qui pourrait causer ce coup de performance initial. Les fichiers .cfc sont dans les sous-répertoires sous le répertoire ROOT du site, donc j'utilise simplement la norme <cfset Request.Helpers[ThisHelper] = createObject("component","cfcs.componentFileName") />. Cette fonction n'appelle pas le init(), elle crée simplement les objets. De plus, cette fonction n'est pas là où nous créons dynamiquement des sources de données, c'est uniquement la création d'objets dans la portée de la requête.Qu'est-ce qui pourrait causer une latence importante lors de la création des composants Lucee à la demande?

Répondre

0

Impossible de commenter Lucee spécifiquement, mais sachez que traditionnellement, nous avons toujours évité la création excessive d'objets dans CF. L'un des objets pourrait-il être déplacé vers la portée de l'application, créé une fois et réutilisé par tous les visiteurs?

Peut-être aussi quelque chose à faire avec Lucee étant basé sur OSGi plutôt que basé sur Classloader. Peut-être certains frais généraux sur le démarrage du service OSGi?

+0

Ouais, les choses viennent de se construire à partir de certaines décisions anciennes. Nous espérions éviter un test de régression massif, mais il semble que ce ne soit pas possible. Merci John! – Kjersti