Debuggage des 404 massives #116
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#116
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?
Le bug est fixé, ceci est just un log pour les infos. @Darks @Eragon
Récemment le forum a des 404 presque partout (avec l'effet comique de valider en apparence la suppression des contenus par les bots d'index, un autre problème à trouver).
Les exemples observés sont :
discussion
comme forum) : OK.discussion
comme forum et1/test23
comme page/slug) : 404.discussion
comme forum) : OK.actus/projets
comme forum) : 404.Symptôme : quand la chaîne à convertir contient un
/
, ça plante.Reproduction minimale (dossier vide avec just
app.py
):Indication pertinente dans le changelog Werkzeug: Fix router to restore the 2.1
strict_slashes == False
behaviour whereby leaf-requests match branch rules and vice versa. #2489Mais je suis plus intéressé par l'issue liée #2491 : The 2.2.x matcher no longer supports regexes that can match a slash.
Il apparaît que la version 2.2 introduit un nouveau parser d'URLs plus rapide, lequel n'accepte pas les slashs dans les chaînes à convertir par défaut.
La documentation indique qu'il existe maintenant un attribut appelé
part_isolating
qui est vrai par défaut et doit être faux pour que le convertisseur puisse voir les slashs.Le fix est donc d'ajouter cet attribut, que l'on peut fixer constant au niveau de la classe :
Fixé par
2b9ab64f6e
.Est-ce que part_isolating a un impact sur la performance du parser ? Et si il y en a un, est-ce qu'il est possible de convertir notre regex pour ne pas avoir cet impact ?
L'impact c'est qu'on n'a pas le speedup de la 2.2. Pour le cas du convertisseur
page
comme on a un unique / on pourrait le séparer en deux, cela dit le but d'en avoir un seul c'était de pas bloat les paramètres des routes. C'est discutable.Pour les forums c'est pas possible sauf si on énumère les deux case possibles (pour la route des forums, et pour la route des topics, ce qui se défend).
Sinon on peut juste mettre autre chose que des slashs comme séparateurs.
Mais je vois pas dans quel monde c'est ça notre bottleneck, franchement. La dernière fois j'ai viré 50% du temps de réponse d'une page du forum entièrement sur le niveau ORM en ajustant les paramètres de génération des requêtes. C'est donc certainement là et sur le rendu Jinja qu'il reste le plus de temps passé...