Performances de LaTeX sur ZdS

a marqué ce sujet comme résolu.
Auteur du sujet

Hello,

Ce matin j’ai voulu lire cet excellent article sur mon téléphone, un Huawei P8 qui n’est pas tout jeune mais qui tourne encore tout à fait correctement.

Sauf que quant je suis arrivé sur la page, j’ai eu une notification de Processing math: XX% pendant plusieurs dizaines de secondes, et après une page qui laggue sérieusement (scroll non fluide, menu à peu près inutilisable).

Après investigation sur PC, je vois que l’article contient 143 formules mathématiques (plus exactement, 143 instances de la classe inlineMath dans le code HTML renvoyé). C’est beaucoup, visiblement trop pour un affichage sur un mobile pas trop puissant. D’où 3 questions :

  1. Il me semblait que le problème avait déjà été soulevé mais je n’ai pas retrouvé ça, est-ce le cas ?
  2. Peut-on faire quelque chose à ce sujet ?
  3. Tant que rien n’a été fait, peut-on demander aux auteurs de n’utiliser les balises LaTeX que pour les cas où c’est nécessaire ? Par exemple utiliser « tension U » et non « tension UUU » – c’est moins élégant mais ça évite de mettre le système de rendu à genoux en multipliant les formules.

Auteur ici !

J’avoue être un peu surpris : normalement, ZdS n’utilise que KaTeX, rendu par le serveur Markdown directement et bien plus performant — qui n’aurait donc pas dû causer de soucis même sur des vieux appareils… à moins qu’il n’y ait une sorte de fallback vers MathJax expliquant le message de chargement (venant de ce dernier, pas de KaTeX) ?

En tous cas, je note. Je ne me suis pas privé de mettre des maths partout car justement, je partais du principe que le rendu était fait côté serveur sans surcharge pour le navigateur, mais si ce n’est pas le cas pour tous les navigateurs, je ferai attention à l’avenir.

#JeSuisArius ⋅ Mon blog scientifiqueLe Pitit Bac

+0 -0

Très curieux. Chez moi c’est bien Katex qui est utilisé. Pas de Javascript, le rendu est tout à fait correcte (y a un problème avec l’expression du nombre d’Avogadro. La première fraction se superpose à la deuxième). Mais je ne comprend pas pourquoi MathJax est utilisé.

MathJax n’est plus inclue maintenant il me semble faux, j’ai une requête vers cloudflare pour récupérer MathJax. La balise math n’est pas utilisée. Vraiment je ne comprend pas.

Édité par ache

ache.one                 🦹         👾                                🦊

+1 -0

(y a un problème avec l’expression du nombre d’Avogadro. La première fraction se superpose à la deuxième)

KaTeX a un peu de mal avec les environnements array j’ai l’impression :/ Mais ça n’implique pas de problèmes de performances, au moins (et ça reste lisible malgré les défauts légers d’affichage — d’ailleurs chez moi ça ne se chevauche pas, même si ça ne passe pas bien loin)

MathJax n’est plus inclue maintenant il me semble faux, j’ai une requête vers cloudflare pour récupérer MathJax. La balise math n’est pas utilisée. Vraiment je ne comprend pas.

J’ai remarqué aussi, j’étais persuadé qu’il n’était plus appelé du tout. Je ne sais pas pourquoi il est encore dans la page vu qu’a priori il n’est plus utilisé ? Sauf fallback comme mentionné plus haut mais sur un navigateur avec un moteur de rendu à jour ça me semble en effet bien surprenant…

Ou peut-être une mauvaise détection des capacités du navigateur en se basant sur l’UA au lieu de tests de support des technologies ? Genre, un cas où Opera Mobile ne serait pas connu et donc, dans le doute, considéré comme arriéré technologiquement. Ce n’est qu’une hypothèse, je n’en sais pas plus que ça.

Édité par Amaury

#JeSuisArius ⋅ Mon blog scientifiqueLe Pitit Bac

+0 -0
Auteur du sujet

J’ai regardé les requêtes. Sous Linux Ubuntu 19.04, Firefox, Chromium et Opera chargent l’intégralité de Mathjax.

Ça me laisse l’impression qu’on passe par KaTeX mais que Mathjax n’a pas été supprimé, et que donc les deux peuvent se marcher dessus.

Il me semble qu’effectivement, dans certaine condition MathJax peut tenter de reparser les élements avec la class inlineMath.

MathJax est encore inclue pour palier à la non actualisation des contenus comme Introduction au codes correcteurs.

Ce tutoriel a besoin d’une réactualisation des formules (pas forcément la même syntaxe) et d’une republication afin de ne plus dépendre de MathJax. Et ce n’est certainement pas le seul.

ache.one                 🦹         👾                                🦊

+0 -0

Seulement sous Opéra ?
J’ai pas de portable pour tester >_<"

ache.one                 🦹         👾                                🦊

+0 -0

Équipe technique

Bonjour à tous,

Je viens de tester le chargement de deux contenus avec beaucoup de maths (l’article très récent sur la nouvelle définition du poids et l’article "Rédiger des maths sur ZDS") sur les applications Android de Firefox, Chrome et Opéra. J’ai effectivement un message qui s’affiche en bas à gauche pendant quelques secondes et qui prouve que MathJax est bien lancé sur ces pages-là. Ce n’est pas le comportement attendu.

Avec la nouvelle version de zmarkdown, on utilise KaTeX pour afficher les formules de maths. On garde MathJax dans le code source (de mémo, une balise <script> avec un lien vers le fichier Mathjax d’un CDN) mais on ne lance le traitement Mathajax que sur les anciens contenus (avant la nouvelle version de zmarkdown). Enfin, ça c’est en théorie !

Confirmez ou infirmez mes propos, mais j’ai bien l’impression qu’on avait bien le comportement attendu jusqu’à aujourd’hui ! Il faut donc trouver pourquoi soudainement notre tambouille ne fonctionne plus, puis régler le problème. On va essayer de ne pas trop tarder car effectivement sur un smartphone ou un ordinateur d’il y a quelques années ça entache pas mal l’expérience utilisateur.

Bonne journée à vous :)

Corruptible avec des crêpes au sirop d’érable ou une bonne bouteille de Côteaux-du-Layon

+4 -0

Salut,

@ache Une republication permet d’actualiser les contenus dont tu parles, ou c’est encore autre chose ?

Assez des salamis, je passe au jambon — Je fais un carnage si ce car nage car je nage, moi, Karnaj ! — Le comble pour un professeur de mathématique ? Mourir dans l’exercice de ses fonctions.

+0 -0

@Karnaj: Normalement oui ^^

Mais il faudra peut-être (certainement) dans certain cas actualiser la notation. Certaines commandes MathJax n’existe plus avec KaTeX ou sont simplement différentes.

ache.one                 🦹         👾                                🦊

+0 -0

Équipe technique

Bonsoir,

Après investigation j’ai trouvé d’où vient le problème. Il se trouve que lorsqu’on écrit une formule, KaTeX traduit celle-ci à la fois en HTML (qui est affiché) et en MathML (qui est caché). C’est ce code MathML qui était transformé en HTML (non visible) par Mathjax. J’ai donc fait une PR pour que Mathjax ne touche pas au code MathML.

J’ai remarqué que Mathjax était entièrement chargé en mémoire sur toutes les pages (avec un total de 20 requêtes). J’ai réussi à réduire cela à 3 requêtes sur les pages qui n’utilisent pas Mathjax (leur contenu est bien entendu mis en cache.

La correction arrivera en production avec la prochaine version, mais elle est sur la bêta et on voit vraiment la différence en terme de fluidité (notamment avec Opera). Je vois laisse essayer par vous même avec le tutoriel Comment rédiger des maths sur ZdS sur la prod et sur la bêta !

Veuillez noter que certaines formules de maths s’affichent mal sur ce tutoriel sur la bêta car la dernière mise à jour date de fin juillet 2018, donc il a été publié avec une ancienne version de KaTeX. Pour éviter tous problèmes de ce genre dans le futur sur la production, on a décidé de bloquer KaTeX en version 0.10.1.

Corruptible avec des crêpes au sirop d’érable ou une bonne bouteille de Côteaux-du-Layon

+3 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte