Cache SPIP et paramètres d'URL inutiles #5200

Open
opened 6 months ago by MathieuAlphamosa · 0 comments

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.

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.
b_b added the
amélioration
label 6 months ago
b_b added this to the 4.2 milestone 6 months ago
Sign in to join this conversation.
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date

No due date set.

Dependencies

This issue currently doesn't have any dependencies.

Loading…
There is no content yet.