Bonjour,
Il est intéressant de se poser cette question et de na pas bêtement inclure ses vidéos dans les balises appropriées. Elle revient finalement à se demander quels sont les avantages d'une technique vis-à-vis des autres et pour ce, voici mon avis.
Je reprends donc votre liste de bas en haut.
Pour "
autre" je suis comme vous, en
flou artistique, je ne vois pas comment on pourrait envisager autrement la chose.
Chargement au clic:
Cela implique, du point de vue utilisateur, un temps de latence entre le moment du clic et le début de la lecture. Cette durée étant fonction de la qualité de la connexion de l'utilisateur, peut être très longue sur les connexions de faible qualité. Il est très désagréable de devoir attendre entre une action et la réalisation de celle-ci.
A éviter autant que faire se peut.
Chargement quand "à portée de vue":
C'est déjà mieux car la durée précédement citée sera réduite par le temps que l'utilisateur passera à lire le blabla entourant la vidéo. Mais s'il a le malheur de commencer sa lecture de la section par le visionnage de la vidéo on revient quasiment au même point en terme de latence. Beaucoup d'inconnues dans l'équation qui conduisent à un "
quitte ou double".
Probablement pas le meilleur choix.
Chargement au chargement de la page:
Alors oui et non. Un chargement synchrone avec le contenu de la page implique un temps de chargement de la page plus long. Quel intérêt de charger la dernière vidéo au chargement de la page et de ralentir celle-ci pour un média qui ne pourra être visionné immédiatement.
Je me disais "et si les vidéos étaient très courtes". Mais à la réflexion je me dis que vous auriez choisis un autre format (gif par exemple qui serait plus léger Edit: ha oui gif ne contient de canal audio. J'ai raté une occasion de me taire sur ce coup
).
Par contre,
en chargeant les médias de manière asynchrone, c'est-à-dire que les vidéos sont chargées après le
painting-time (moment qui suit celui où le DOM est construit et le css appliqué), cela ne rallongerait pas le temps de chargement de la page et
présenterait l'avantage de pouvoir démarrer la lecture immédiatement après action de l'utilisateur.
The best-choice:
Selon moi il faut faire charger les vidéos le plus vite possible une fois le site accessible à l'utilisateur
en privilégiant celle(s) au dessus de la ligne de flottaison (sans bloquer le chargement et l'affichage du site).
Mais pas que. Il faut aussi prévoir le cas où l'utilisateur zappe des sections (par action sur un lien interne ou par scrolling). En ce cas il faut
prioriser le chargement de la vidéo qui apparaît au dessus de la ligne de flottaison.
Schématiquement, voici le processus que j'ai en tête:
1-l'utilisateur accède au site ; celui-ci se charge et s'affiche.
2-dès que le site est affiché on commence le chargement de la vidéo au dessus de la ligne de flottaison puis on charge les vidéos une à une en http 1 ou toutes en même temps en http 2 (ou par groupe - par ex par groupe de 3 vidéos).
3-si l'utilisateur se déplace dans le site on traque son déplacement et on modifie l'ordre de chargement des vidéos en fonction de sa position en gardant à l'esprit qu'il est plus probable qu'il descende plutôt qu'il ne remonte - donc s'il est en section 3 on met en file d'attente le chargement de la vidéo de la section 4.
4-une fois toutes les vidéos chargées on arrête la traque de la position utilisateur.
0-on prévoit aussi de mettre en cache les vidéos afin qu'à sa prochaine visite tout ce processus puisse être évité (ce qui implique au point 2 de contrôler si les vidéos ne sont pas déjà en cache).
Alors je ne dis pas que ceci soit facile à mettre en place mais une fois fait ce peut-être d'une redoutable efficacité. Cette théorie reste bien sûr un avis personnel pour lequel je privilégie l'expérience utilisateur au détriment du confort du développeur.
Qu'en pensez-vous ?
Modifié par Greg_Lumiere (06 May 2018 - 11:57)