J'ai une application web utilisant des clients légers (terminaux bosanova) comme frontal pour les utilisateurs. J'ai remarqué des différences de performances en JavaScript entre le client léger et un PC. Les terminaux exécutent Windows XP embarqué avec IE6, et les pages auxquelles je fais référence utilisent le framework prototype JS pour faire une validation plutôt simple sur les éléments de formulaire. Par exemple, voici ce que j'utilise pour m'assurer que les champs obligatoires sont remplis.
Il y en a deux autres comme ceci pour .numeric et .alaphanumeric qui testent de façon acordingly et poussent des erreurs pour arrêter le formulaire de forme soumis.performance javascript entre le client léger et le pc
$$('.requiredfield').each(function (elem){
if (($(elem).value.length == 0) || ($(elem).value == null)) {
$(elem).addClassName("nonvalid");
$(elem).siblings().first().addClassName("error");
requiredErrors.push($(elem));
}
});
Le problème que je vois est un PC dans Firefox ou IE un formulaire avec les champs de la 5-20 la page prend peut-être une demi-seconde pour traiter plus que de la validation. Sur le terminal cependant, il faut de 15 à 25 secondes de plus pour exécuter la validation que la même page sans le faire. Comme je crois que j'ai mentionné, j'ai testé cela dans IE6 sur un PC et ne vois pas la perte de performance. Un appel à Bosanova m'a conduit à améliorer la mémoire dans le terminal que j'ai fait juste avant cet affichage et les résultats n'ont pas changé.
Je peux changer le script afin que je boucle une fois les champs de formulaire et manipulez .numeric .alphanumeric .required comme je vais et cela aidera j'en suis sûr. Comme c'est le cas actuellement, il existe une telle différence de performance entre le PC et le Terminal (client léger). Je suis curieux de savoir pourquoi.
Si quelqu'un a une expérience de dépannage ou sait pourquoi prototype/javascript subirait une telle perte de performance sur un terminal j'apprécierais grandement quelques conseils.
Mise à jour: >>>>>>>>>>>>>>>>>
J'ai toujours mis à l'essai et à la recherche sur cette question et ai pensé partager cela. Nous avons reçu hier un Terminal plus récent que j'ai chargé et testé. Le nouveau terminal sous IE6 fonctionnait parfaitement comme tout autre navigateur. bien sûr, il était un peu plus lent qu'un PC parce que 1. son exécution IE6 et 2. son client léger, mais la différence de vitesse était dans les centaines de seconde contre une différence de 10-50 secondes exécutant les mêmes scripts. Les spécifications physiques des 2 différents clients légers ne sont pas si différentes que 1,2 ghz (ancienne) vs 1,6 ghz (nouvelle) mémoire était la même et le HD/DOM était de 512 Mo (ancien) vs 1gig (nouveau). Encore n'ont pas été en mesure de préciser ce qui se passe dans l'ancien terminal, mais semble être lié à ce modèle spécifique/révision du terminal.
Mise à jour: >>>>>>>>>>>>>>>>>
merci pour les conseils. Je vais admettre volontiers que j'apprends toujours JavaScript. Je suis un programmeur côté serveur par métier qui a barboté dans JavaScript Front-end au cours de la dernière année que les projets ont besoin. Je vais retravailler un peu le matin et voir si je peux rendre tolérable. – Nathan
juste pour mettre à jour. J'ai ajouté certaines de vos suggestions et j'ai accéléré le script. Ce faisant, j'ai été capable de contourner beaucoup de logique jusqu'à ce qu'un utilisateur fasse une erreur. Donc, cela a aidé certains (jusqu'à 8-15 secondes plutôt que 15-20). Il y a toujours une différence drastique entre le PC et le thinclent. – Nathan
@Nathan: Avez-vous envisagé d'utiliser l'une des nombreuses bibliothèques de validation disponibles? Beaucoup d'entre eux vont rendre votre vie beaucoup plus facile, j'en suis sûr. Sauf si vous avez besoin d'un comportement très personnalisé, je suis sûr qu'ils captureront toutes les fonctionnalités dont vous auriez besoin. J'ai en fait ma propre bibliothèque sur laquelle je travaille depuis un moment. –