Mmm, sospetto che il problema possa essere uno di tre diversi, ma il più probabile per me è il ridimensionamento dinamico.
1. Ridimensionamento dinamico degli avatar
quando hai migrato i tuoi upload su R2, sono state spostate anche le immagini originali; tuttavia, Discourse utilizza molte dimensioni diverse di avatar (ad esempio 45px per i messaggi, 120px per la scheda utente).
se quelle dimensioni ottimizzate specifiche non sono state migrate perfettamente, o non sono state ancora generate, Discourse deve generarle in modo sincrono nel momento in cui l’utente le clicca:
- Discourse scarica l’avatar originale da R2 sul server locale
- lo ridimensiona utilizzando ImageMagick
- carica la nuova dimensione su R2
- reindirizza il browser al nuovo URL, e questo processo richiede da 3 a 4 secondi
per verificare: aggiorna forzatamente la pagina: se l’avatar impiega 3-4 secondi la prima volta, ma si carica istantaneamente la seconda volta, è esattamente ciò che sta accadendo.
per risolvere: il problema si risolverà naturalmente man mano che gli utenti navigano e le dimensioni vengono generate. Ma puoi risolverlo immediatamente forzando il server a pre-generare tutti gli avatar in background accedendo al server tramite SSH ed eseguendo:
./launcher enter app
rake avatars:refresh
2. Timeout IPv6 di 3 secondi
se gli avatar impiegano 3-4 secondi ogni volta, anche dopo più aggiornamenti, probabilmente stanno incontrando un timeout di rete.
Gli endpoint API di Cloudflare R2 sono dual-stack, ovvero utilizzano sia IPv4 che IPv6. Se il tuo droplet del server ha un indirizzo IPv6 assegnato, ma il gateway IPv6 dell’host non è instradato correttamente, la connessione interna di Ruby al bucket R2 tenterà prima IPv6, rimarrà in attesa per 3 secondi (questo è il timeout TCP predefinito di Linux), fallirà e quindi avrà successo istantaneamente utilizzando IPv4.
per verificare: accedi al server tramite SSH ed esegui:
curl -I -6 https://cloudflare.com
se rimane in attesa per alcuni secondi e fallisce, l’IPv6 del server non funziona correttamente, causando un ritardo di 3 secondi in ogni controllo interno dell’API S3.
per risolvere: dovrai oppure correggere il routing IPv6 nel pannello di controllo dell’host o forse disabilitare completamente IPv6 sul droplet.
3. Ritardi di Gravatar
se il tuo sito è configurato per controllare gli aggiornamenti di Gravatar, potrebbe contattare i server esterni di Gravatar prima di visualizzare l’avatar. Se il server ha una connessione in uscita lenta (spesso correlata anche a DNS o IPv6), potrebbe bloccare il rendering dell’avatar.
per verificare: esegui questo comando sul server
curl -I -6 https://gravatar.com
se rimane in attesa per 3 secondi, l’IPv6 non funziona correttamente (vedi sopra)
soluzione relativa a Gravatar: nelle impostazioni di Discourse, vai su scarica automaticamente i gravatars, disattivala temporaneamente e vedi se questo risolve il problema. Non penso che sia questo il problema, ma se lo è, puoi lasciare l’impostazione disattivata, oppure correggere il routing IPv6 come descritto al punto 2, oppure cambiare il resolver DNS.