hmmm, je soupçonne qu’il pourrait s’agir de l’un des 3 problèmes différents, mais le plus probable à mes yeux est le redimensionnement à la volée.
1. Redimensionnement à la volée des avatars
lorsque vous avez migré vos uploads vers R2, cela a déplacé les images originales ; cependant, discourse utilise de nombreuses tailles différentes d’avatars (par ex. 45px pour les messages, 120px pour la carte utilisateur).
si ces tailles spécifiques optimisées n’ont pas migré parfaitement, ou n’ont pas encore été générées, dscourse doit les générer de manière synchrone au moment où l’utilisateur clique dessus :
- discourse télécharge l’avatar original depuis R2 vers le serveur local
- le redimensionne en utilisant imagemagick
- télécharge la nouvelle taille vers R2
- redirige le navigateur vers la nouvelle URL, et ce processus prend 3 à 4 secondes
pour vérifier : actualisez fortement la page - si l’avatar met 3-4 secondes la première fois, mais se charge instantanément la deuxième fois, c’est exactement ce qui se passe.
pour corriger : cela se corrigera naturellement à mesure que les utilisateurs naviguent et que les tailles sont générées. mais vous pouvez le corriger instantanément, en forçant le serveur à pré-générer tous les avatars en arrière-plan en se connectant en ssh à votre serveur et en exécutant :
./launcher enter app
rake avatars:refresh
2. Le délai d’attente IPv6 de 3 secondes
si les avatars mettent 3-4 secondes à se charger à chaque fois, même après plusieurs actualisations, ils rencontrent probablement un délai d’attente réseau.
les points de terminaison de l’api cloudflare R2 sont double pile, c’est-à-dire qu’ils utilisent à la fois ipv4 et ipv6. si votre gouttelette de serveur a une adresse ipv6 qui lui est assignée, mais que la passerelle ipv6 de l’hôte n’est pas correctement routée, la connexion interne de ruby au compartiment R2 tentera ipv6 en premier, restera bloquée pendant 3 secondes (c’est le délai d’attente TCP par défaut de linux), échouera, puis réussira instantanément en utilisant ipv4.
pour vérifier : connectez-vous en ssh au serveur et exécutez :
curl -I -6 https://cloudflare.com
s’il reste bloqué pendant quelques secondes et échoue, l’ipv6 du serveur est cassé, ce qui cause un délai de 3 secondes à chaque vérification de l’api S3 interne.
pour corriger : vous devrez soit corriger le routage ipv6 dans votre panneau de contrôle d’hôte, ou peut-être même désactiver ipv6 sur la gouttelette entièrement
3. Délais gravatar
si votre site est configuré pour vérifier les mises à jour gravatar, il peut pinguer les serveurs externes de gravatar avant de rendre l’avatar. si le serveur a une connexion sortante lente (également souvent liée à DNS ou ipv6), il est susceptible de bloquer le rendu de l’avatar.
pour vérifier : exécutez ceci sur votre serveur
curl -I -6 https://gravatar.com
s’il reste bloqué pendant 3 secondes, l’ipv6 est cassé (voir ci-dessus)
correction liée à gravatar : dans les paramètres de votre discourse, allez dans télécharger automatiquement les gravatars, désactivez-le temporairement, et voyez si cela corrige le problème - je ne pense pas que ce soit le problème, mais si c’est le cas, vous pouvez laisser le paramètre désactivé, ou corriger le routage ipv6 comme en 2 ci-dessus, ou peut-être changer le résolveur DNS.