Les avatars mettent du temps à se charger après le passage à R2 compatible S3

Oh wow, d’accord. C’est probablement l’élément clé et cela pointe vers un problème différent.

avatar_proxy dans les journaux signifie généralement que Discourse refuse de servir l’avatar directement depuis le CDN Cloudflare R2. Au lieu de cela, Discourse intercepte activement la demande et télécharge l’image depuis R2 vers le dossier /tmp du serveur local, puis utilise Ruby pour servir l’image au navigateur. Je pense donc que cela contourne complètement le CDN et explique le délai de 3 secondes — je soupçonne que le serveur récupère et charge manuellement le fichier à chaque demande :grimacing:

Discourse utilise avatar_proxy dans quelques scénarios très spécifiques et c’est généralement un paramètre de confidentialité ou de sécurité qui force le serveur à masquer l’URL externe.

Vérifiez ces paramètres dans Admin > Paramètres du site :

Trouvez external system avatars url — s’il y a quelque chose dans cette case (comme /letter_avatar_proxy/v4/...), supprimez-le pour qu’il soit vide. Cela devrait empêcher Discourse de faire le proxy des avatars par défaut basés sur les lettres. Il vaut aussi la peine de vérifier uploaded avatars allowed groups et de vous assurer qu’il indique TL_0.

Vérifiez peut-être également DISCOURSE_S3_CDN_URL pour vous assurer qu’il est correct, sans barre oblique à la fin ni faute de frappe ?

Remappage des avatars personnalisés :
il semble probable que votre base de données contienne encore les URL brutes du bucket R2 au lieu de votre nouvelle URL CDN ; comme elles ne correspondent pas, votre forum les fait probablement passer par un proxy pour des raisons de sécurité.

Vérifiez dans la console Rails pour voir exactement avec quoi Discourse se bat :

./launcher enter app
rails c

Choisissez un nom d’utilisateur avec un avatar qui met du temps à charger.

u = User.find_by_username("the_selected_username")
u.user_avatar.custom_upload.url

Si la sortie renvoie une URL de bucket brute, vos remappages précédents n’ont pas tout capturé (peut-être qu’ils ont manqué un sous-domaine ou un schéma).

Pour corriger, connectez-vous en SSH à votre serveur, retournez dans votre conteneur à nouveau (pas dans Rails) (./launcher enter app), et exécutez l’outil de remappage (encore une fois, lol) pour remplacer l’URL brute par votre URL CDN :

discourse remap "https://<votre-url-cloudflare-brute>.r2.cloudflarestorage.com" "https://cdn.votre-domaine.com"

Ensuite, exécutez-le une deuxième fois en utilisant // au lieu de https:// au cas où.

Au fait, juste par curiosité, quel service d’hébergement utilisez-vous ? J’ai la même configuration générale que vous et je n’ai pas encore rencontré ce problème. Je suis donc aussi intéressé par votre configuration et je veux essayer de la reproduire d’une manière ou d’une autre.