No momento, ao clicar em um cartão de usuário, carregamos /u/david.json, que é exatamente o mesmo endpoint do meu perfil completo. Isso é um pouco desperdiçado, já que o cartão de usuário nem sequer utiliza a maioria dos dados!
Portanto, vamos mudar o cartão de usuário para usar uma nova rota /u/david/card.json. Isso contém apenas informações suficientes para renderizar o cartão. Em meus testes, isso torna os cartões de usuário de 2 a 3 vezes mais rápidos do que antes!
No momento, essa mudança está atrás de uma configuração de site oculta. Para testá-la, acesse seu console do Rails e execute
SiteSetting.enable_new_user_card_route = true
Nas próximas semanas, isso será ativado por padrão e a configuração de site será removida. Isso já está ativado agora no Meta.
Ótimo! O que preciso fazer?
Se você é um usuário ou administrador do fórum, nada! Você deve ver um desempenho melhorado nos cartões de usuário muito em breve!
Se você é um desenvolvedor de plugin, pode precisar fazer alguns ajustes para suportar a nova rota.
Uso campos personalizados no meu plugin e os renderizo no cartão de usuário
Sem problemas, os campos personalizados continuarão funcionando exatamente da mesma maneira.
Adiciono dados ao serializador de usuário e os uso no perfil completo do usuário
Tudo bem, o perfil do usuário continuará usando o endpoint antigo e todas as chamadas add_to_serializer existentes continuarão funcionando.
Adiciono dados ao serializador de usuário e os uso no cartão de usuário
Ok, você precisará fazer um pouco de trabalho. Anteriormente, tínhamos apenas uma estrutura como
class UserSerializer < BasicUserSerializer
Agora temos uma estrutura como
class UserCardSerializer < BasicUserSerializer
# e
class UserSerializer < UserCardSerializer
Se você quiser que algo seja incluído no endpoint do cartão, você precisa adicioná-lo ao UserCardSerializer. Por exemplo, se você tiver código como este:
add_to_serializer(:user, :favourite_forum_software) do
"discourse"
end
Você precisa alterá-lo para
add_to_serializer(:user_card, :favourite_forum_software) do
"discourse"
end
O UserSerializer incluirá automaticamente qualquer coisa no UserCardSerializer, então você pode fazer essa alteração imediatamente e ela funcionará nos testes aprovados (mesmo com a configuração de site oculta desativada).
Para manter a compatibilidade com as versões estável/beta, adicione uma verificação para UserCardSerializer como esta:
# TODO: Remover a alternância assim que o Discourse 2.4 estável for lançado
serializer = (defined? UserCardSerializer) ? :user_card : :user
add_to_serializer(serializer, :favourite_forum_software) do
"discourse"
end