Pour le moment, lorsque vous cliquez sur une carte d’utilisateur, nous chargeons /u/david.json, qui est exactement le même point de terminaison que mon profil complet. C’est un peu gaspilleur, car la carte d’utilisateur n’utilise même pas la plupart des données !
Par conséquent, nous allons passer la carte d’utilisateur à une nouvelle route /u/david/card.json. Celle-ci contient juste assez d’informations pour rendre la carte. Dans mes tests, cela rend les cartes d’utilisateur 2 à 3 fois plus rapides qu’auparavant !
Pour le moment, ce changement est masqué par un paramètre du site. Pour l’essayer, accédez à votre console Rails et exécutez :
SiteSetting.enable_new_user_card_route = true
Dans les prochaines semaines, cela sera activé par défaut et le paramètre du site sera supprimé. Cela est actuellement activé sur Meta.
Super ! Que dois-je faire ?
Si vous êtes un utilisateur ou un administrateur de forum, rien ! Vous devriez voir une amélioration des performances des cartes d’utilisateur très bientôt !
Si vous êtes un développeur de plugin, vous devrez peut-être apporter quelques ajustements pour prendre en charge la nouvelle route.
J’utilise des champs personnalisés dans mon plugin et je les affiche sur la carte d’utilisateur
Pas de problème, les champs personnalisés continueront de fonctionner exactement de la même manière.
J’ajoute des données au sérialiseur d’utilisateur et je les utilise dans le profil complet de l’utilisateur
C’est bon, le profil utilisateur continuera d’utiliser l’ancien point de terminaison et tous les appels add_to_serializer existants continueront de fonctionner.
J’ajoute des données au sérialiseur d’utilisateur et je les utilise sur la carte d’utilisateur
D’accord, vous devrez faire un peu de travail. Auparavant, nous avions simplement une structure comme :
class UserSerializer < BasicUserSerializer
Maintenant, nous avons une structure comme :
class UserCardSerializer < BasicUserSerializer
# et
class UserSerializer < UserCardSerializer
Si vous voulez que quelque chose soit inclus dans le point de terminaison de la carte, vous devez l’ajouter au UserCardSerializer. Par exemple, si vous avez un code comme celui-ci :
add_to_serializer(:user, :favourite_forum_software) do
"discourse"
end
Vous devez le modifier en :
add_to_serializer(:user_card, :favourite_forum_software) do
"discourse"
end
Le UserSerializer inclura automatiquement tout ce qui se trouve dans le UserCardSerializer, vous pouvez donc effectuer ce changement immédiatement et cela fonctionnera même avec le paramètre du site masqué désactivé.
Pour maintenir la compatibilité avec les versions stable/bêta, ajoutez une vérification pour UserCardSerializer comme ceci :
# TODO : Supprimer le commutateur une fois Discourse 2.4 stable publié
serializer = (defined? UserCardSerializer) ? :user_card : :user
add_to_serializer(serializer, :favourite_forum_software) do
"discourse"
end