Routage par dièse (hash routing)
Le hash routing (« routage par dièse ») est une technique côté client utilisée dans les applications monopage (SPA) pour gérer la navigation et les changements d'état sans recharger toute la page.
Contexte historique
Les premières SPA ne pouvaient pas modifier la partie chemin de l'URL sans recharger la page. Pour contourner ce problème, les développeur·euse·s utilisaient le routage SPA basé sur le hash, qui stocke la route dans le « fragment », c'est-à-dire la partie de l'URL qui suit le symbole #. Les motifs courants incluaient #/profile et #!/profile. Les applications vérifiaient en continu window.location.hash (ou écoutaient l'événement hashchange lorsqu'il a été pris en charge) pour détecter les changements de fragment lors de la navigation ; la SPA mettait alors à jour la vue à chaque changement de fragment.
Limitations
Bien que cette approche ne nécessite aucune configuration côté serveur, elle présente des limites : la prise en charge du cache arrière/avant était limitée, les pages avec des URL basées sur le hash n'étaient pas correctement indexées (les moteurs de recherche ignoraient le fragment), et les URL obtenues étaient jugées peu lisibles.
Le routage basé sur le hash est aujourd'hui considéré comme une technique héritée. Il n'est utilisé, le cas échéant, qu'en solution de repli pour les très anciens navigateurs ou pour les hébergements statiques où le routage côté serveur ne peut pas être configuré.
Alternatives modernes
Depuis 2012, tous les principaux navigateurs (Chrome 5, Safari 5, Firefox 4) prennent en charge l'API History. Les SPA peuvent désormais utiliser pushState(), replaceState() et l'événement popstate pour manipuler la pile d'historique du navigateur, passer directement à des chemins comme /profile et mettre à jour la vue sans rechargement complet. Cela permet également d'obtenir des URL plus propres, sans fragment hash.