Open CeyFun opened 3 years ago
Wait.
đ
(en avance pour la suite)
fait avec @lusardia @CeyFun @dylan-correia
AprĂšs vĂ©rification, les images semblent assez optimisĂ©es et nous ne pensons pas que ce soit le problĂšme principal. Selon nous, le problĂšme vient plutĂŽt du fait que les 1700+ images de vitraux sâaffichent dĂšs le lancement du site. Lâutilisateur nâa aucune utilitĂ© de voir ces 1700 vitraux de maniĂšre non filtrĂ©e, en plus de cela, ces images se chargent Ă lâinsu de lâutilisateur et lui demandent une certaine utilisation de ses donnĂ©es mobiles avant de prendre de la place dans le cache de son navigateur. (AprĂšs vĂ©rification, ce problĂšme semble liĂ© Ă Steatite qui envoit toutes les donnĂ©es dâun coup et ne peut pas les envoyer par paquets).
Solution 1 : Nous pensons quâil serait plus intĂ©ressant de les charger progressivement au fur et Ă mesure que lâutilisateur fait dĂ©filer la page.
Solution 2 : La seconde solution serait de diviser les vitraux en pages contenant un nombre de vitraux que lâutilisateur peut choisir via un mini menu dĂ©roulant du mĂȘme type que celui positionnĂ© sous le plan.
Solution 3 : Enfin, une derniĂšre solution serait de ne charger aucun vitrail au chargement de la page et de ne les charger que lors de lâajout dâattributs de la part de lâutilisateur (exemple : spatial, artisteâŠ).
Nous privilĂ©gions la premiĂšre solution car câest celle qui nous semble la plus simple, Ă la fois pour les utilisateurs et Ă implĂ©menter.
Maquettes imageant les solutions envisagées : https://www.figma.com/file/NAptXTPj8xrmkYZoEBPaFS/Issue-383?node-id=0%3A1
Nous avons trouvĂ© la partie du code qui impacte le chargement des items (photos des vitraux) sur la page dâaccueil. Nous pensons quâil sâagit de la classe Corpora. Cette classe est situĂ©e sur le fichier Porphyry/src/components/portfolioPage/Corpora.jsx nous nous intĂ©resserons donc Ă la mĂ©thode Item(props) appelĂ©e dans la mĂ©thode render().
Le code de Steatite sera Ă©galement Ă analyser et Ă modifier pour pouvoir optimiser lâenvoi de donnĂ©es (par paquets si possible, au lieu dâenvoyer tout dâun coup).
Chargement progressif (testé mais ne résout pas le problÚme) :
Nos solutions ne changent pas, nous avons simplement vu que le problĂšme se situait sur Steatite plutĂŽt que dans Argos ou dans le code de Porphyry.
Pour pouvoir tester nos diffĂ©rentes solutions, nous aurions besoin dâavoir accĂšs Ă un grand nombre de vitraux pour pouvoir comparer lâĂ©volution des temps de chargement. En effet, sur notre base de donnĂ©es Argos, nous avons trop peu de donnĂ©es, le chargement est assez rapide.
Il ne semble pas nécessaire d'avoir recours à des bibliothÚques pour simplifier l'implémentation.
https://github.com/CeyFun/Porphyry/tree/test-lazy-loading
Pas besoin d'appeler des services extĂ©rieurs supplĂ©mentaires, le service steatite est utilisĂ© pour optimiser le poids des images, mais ces derniĂšres sont dĂ©jĂ trĂšs lĂ©gĂšres, nous pensons donc quâil nâest pas nĂ©cessaire de les optimiser plus. Il faudra lâanalyser et le modifier afin quâon puisse procĂ©der aux solutions envisagĂ©es.
Pour avoir un jeu de donnĂ©es suffisant, nous avons redirigĂ© les requĂȘtes de Porphyry vers les serveurs Argos et Steatite hĂ©bergĂ©s Ă lâUTT.
@qhainos @lusardia @CeyFun @dylan-correia Merci pour ce début de stratégie d'implémentation (en avance).
Solution 3 : Enfin, une derniĂšre solution serait de ne charger aucun vitrail au chargement de la page et de ne les charger que lors de lâajout dâattributs de la part de lâutilisateur (exemple : spatial, artisteâŠ).
Comme mentionnĂ© lors de la rĂ©union de ce matin, c'est cette derniĂšre solution qui est Ă privilĂ©gier mais UNIQUEMENT quand on est en mobilitĂ© (en effet les besoins et les contraintes ne sont pas du tout les mĂȘmes quand on est sur un bureau).
Nous avons trouvĂ© la partie du code qui impacte le chargement des items (photos des vitraux) sur la page dâaccueil. Nous pensons quâil sâagit de la classe Corpora. Cette classe est situĂ©e sur le fichier Porphyry/src/components/portfolioPage/Corpora.jsx nous nous intĂ©resserons donc Ă la mĂ©thode Item(props) appelĂ©e dans la mĂ©thode render().
La zone est bonne... AprÚs on voit dans votre texte qu'il y a un petit flottement pour savoir si sera plus précisément dans le render
de Corpora
ou d'Item
(ou dans les fonctions qui permettent d'utiliser l'un dans l'autre).
C'est un peu normal car vous avez deux critĂšres qui doivent ĂȘtre conbinĂ©s pour les cacher :
Le premier est faisable avec Bootstrap, mais le second est plus un traitement à partir des données de haut niveau. Donc effectivement ce ne serait pas étonnant qu'il y ait des modifications à deux endroits différents.
D'autres points Ă©tant hors-sujet, du coup, je n'en parlerai pas ici.
A dĂ©faut de pouvoir charger l'application plus rapidement, ou reduire le nombre de requĂȘtes, il serait aussi possible d'afficher un spinner (exemple ici), ou des skeletons (exemple ici), le temps que les diffĂ©rentes requĂȘtes soient traitĂ©es. Cela permettrait de pouvoir tester cette fonctionnalitĂ©. Il faudrait Ă©galement pouvoir tester les temps de rendu de l'application selon les rĂ©seaux.
Description
The mobile version takes a long time to load every item when the user first connect without feedback indicating that the application is loading.
What is the valuable outcome that cannot be achieved because of this bug?
The application could be mistaken as not working, thus the users could give up using it pretty quickly.
For which stakeholder (people, role, project, domain) is it important?
This impacts the end users.
Reproduction scenario
Steps to reproduce the behavior:
Expected behavior
The first loading should be quick or at least indicated to the end user.
Environment
Workaround
Wait.
Deliverables status
Phase 1
Phase 2