Cache SPIP et paramètres d'URL inutiles
Contexte de ma problématique ici : https://discuter.spip.net/t/cache-spip-et-parametres-urls/161890
Pour résumer certains sites/services rajoutent des paramètres d'URL pour les visiteurs entrant sur le site. C'est par exemple un grand classique lors de campagne d'acquisition chez Google, Facebook, ... Le visiteur arrive sur le site avec une URL du type https://monsite.fr?at_medium=toto&at_campaign=tata&at_platform=google&gclid=Cj0KCQjw1tGUBhDXARIsAIJx01n5XG3S
Si je ne me trompe pas chacun de ces visiteurs va demander à SPIP de produire un cache spécifique de la page d'arrivée.
Le define _CONTEXTE_IGNORE_VARIABLES
semble avoir été créé pour filtrer ces paramètres https://git.spip.net/spip/spip/src/branch/master/ecrire/public/assembler.php#L27
Mais nettoyer_uri_var
n'utilise pas ce define et semble donc nécessiter la modification du regex directement dans le core de SPIP https://git.spip.net/spip/spip/src/branch/master/ecrire/inc/utils.php#L728
/**
* Nettoie une request_uri des paramètres var_xxx
*
* Attention, la regexp doit suivre _CONTEXTE_IGNORE_VARIABLES défini au début de public/assembler.php
*
* @param $request_uri
* @return string
*/
function nettoyer_uri_var($request_uri) {
$uri1 = $request_uri;
do {
$uri = $uri1;
$uri1 = preg_replace(
',([?&])(var_[^=&]*|PHPSESSID|fbclid|utm_[^=&]*)=[^&]*(&|$),i',
'\1',
$uri
);
} while ($uri <> $uri1);
return preg_replace(',[?&]$,', '', $uri1);
}
RastaPopoulos propose :
1/ que _CONTEXTE_IGNORE_VARIABLES
et nettoyer_uri_var
prennent en compte par défaut d'autres variables très connues. Encore faut-il pouvoir trouver la liste des paramètres à supprimer (ceci par exemple, mais ça ne m'a pas l'air complet https://github.com/Smile4ever/Neat-URL). Peut être faut-il se contenter des gros pourvoyeurs de liens trackés (FB, Google, YT, Twitter, fournisseurs de newsletters) ?
2/ de rendre nettoyer_uri_var
extensible par un define ou un pipeline.