Envoi de nombreuses requêtes pour le téléversement de vidéos/audios lors de la modification d'un message

Bonjour à tous ! Je souhaite signaler un bug.
Reproduit sur les versions v2.4.5 et v2.5.0.

Prérequis

  • Créez un message contenant un téléchargement vidéo ou audio.
  • J’ai testé avec le téléchargement de médias sécurisés, mais le problème devrait aussi se reproduire avec des médias non sécurisés.
  • Commencez à éditer le message.
  • Ouvrez la console de développement du navigateur. Optionnellement, appliquez un filtre pour l’API de téléchargement.
  • Attendez que toutes les requêtes soient terminées, puis effacez la console.

Étapes pour reproduire

  • Tapez n’importe quoi dans la zone de gauche (édition).
  • Vérifiez la console de développement du navigateur.

Résultat observé

  • Chaque frappe est considérée comme une modification, ce qui simplifie la saisie mais génère constamment des événements de téléchargement vidéo.
  • Un grand nombre de modifications entraîne l’envoi massif de requêtes, puis le refus des requêtes en raison de la limite de débit de l’API et le déconnexion automatique du forum.

Résultat attendu

  • Aucune requête de téléchargement audio/vidéo lors de la modification d’un message

Voir le GIF :

Note sur le bug :

Cette ligne est à l’origine du bug. Elle appelle la fonction load de l’élément DOM <video>/<audio> à chaque rendu de l’aperçu, c’est-à-dire à chaque modification du message.

3 « J'aime »

Cela persiste-t-il dans la version bêta 2.6 ?

Oui, cela persiste dans la version 2.6 bêta ainsi que dans le dernier commit (208d85aaff0392a3a796f84ea78670def6ed7b8e) de la branche test-passed.

C’est étrange. Je ne peux reproduire le problème que si je coche la case « Désactiver le cache » dans l’onglet Réseau de mon inspecteur web. Lorsque je décoche « Désactiver le cache », j’obtiens les résultats attendus. J’utilise Chrome sous Ubuntu. D’après votre vidéo, il ne semble pas que « Désactiver le cache » soit sélectionné, donc je ne suis pas sûr de ce qui cause cette différence.

1 « J'aime »

« Désactiver le cache » ne doit pas affecter l’envoi des requêtes. Cela influence uniquement la provenance du résultat d’une requête : soit depuis le cache du navigateur, soit depuis la source réelle.

Ces requêtes de téléchargement sont envoyées par le code qui réaffiche l’aperçu à chaque frappe, ce qui entraîne la création d’un nouvel élément DOM vidéo/audio. Ainsi, load est appelé pour un nouvel élément DOM, ce qui nécessite inévitablement l’envoi d’une requête.
Même s’il s’agissait d’un élément DOM « mis en cache » (et non systématiquement créé à nouveau), une requête n’est envoyée qu’une seule fois, indépendamment de l’option « Désactiver le cache ».

J’ai examiné cela et je parviens à reproduire le problème, partiellement, avec des uploads de vidéos sécurisés et non sécurisés. À un certain moment, il semble que le cache s’active et arrête d’envoyer ces requêtes en boucle, mais le problème persiste. La ligne que vous avez signalée :

a été ajoutée par mes soins, mais elle ne semble plus avoir aucun effet aujourd’hui. Si je la supprime, les aperçus vidéo fonctionnent toujours correctement. Je sais que nous avons réalisé d’autres travaux sur les vignettes vidéo, etc., qui ont probablement résolu le problème pour lequel j’avais initialement ajouté cette ligne. Je pense donc que je vais simplement la supprimer, ce qui résoudra le problème des multiples requêtes.

3 « J'aime »

Fusionné une correction FIX: Remove unnecessary audio/video parent element load by martin-brennan · Pull Request #10511 · discourse/discourse · GitHub. Merci d’ailleurs pour le rapport de bug détaillé ! @kkurdupov

4 « J'aime »