Contrôle des avatars #42
Labels
No Label
Core
bug
duplicate
easy
enhancement
help wanted
invalid
performance
proposal
question
security
warning
wontfix
No Milestone
No Assignees
2 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: devs/PCv5#42
Loading…
Reference in New Issue
No description provided.
Delete Branch "%!s(<nil>)"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Pour les avatars, je pensais faire un système plus propre, à coup d'id stocké en BDD, et permettant d'éviter les problèmes de cache quand on le modifie.
Grossièrement, on ajoute une colonne
avatar_id: int
dans la représentation d'un membre.Pour afficher l'avatar d'un membre, pas grand chose qui change, si ce n'est qu'on sert le fichier
{user.avatar_id}.png
au lieu de{user.id}.png
.Pour le modifier/l'ajouter, on modifie la valeur
avatar_id
àUser.query.max(User.avatar_id) + 1
.Par défaut la valeur est à 0, ce qui permet d'éviter d'aller tester si le fichier existe en mémoire comme maintenant (meilleures perfs) et d'éviter le cas d'initialisation où personne n'a modifié son avatar.
Si l'utilisateur modifie son avatar, la valeur va donc passer de 31 à 37 par exemple, et donc tous les navigateurs vont redemander le nouvel avatar. On peut donc mettre un entête
Cache-Control
très long, puisqu'on a la certitude que le couple (avatar, id) ne changera jamais.Concernant "tester si l'avatar existe" ça n'a pas vraiment de coût ajouté, c'est même entièrement dans Nginx. Mais l'histoire de rechargement est un bon argument.
Pourquoi pas
{user.id}_{avatar_id}.*
pour garder la tracabilité des utilisateurs ?Va pour ça o/