[SPIP Zone] [Cachelab] fbclid -> 1 cache par visiteur unique

Bonjour,

Je suis toujours les événements ... qui pourraient provoquer un
recalcul pour un article lorsque celui-ci est déjà en cache, et que le
délai de validité n'est pas encore écoulé.

Pour ces articles :

- utilisation du filtre "jusqueminuit" : provoque une réécriture du
cache à minuit 5 minutes

En principe : 1 et une seule réécriture du cache si un visiteur humain
visite la page.

Cependant pour certains articles, il peut y avoir plusieurs générations
de cache.

Pourquoi ?

1 premier cas est l'ajout de paramètres à l'URL, par le site qui envoie
le visiteur.

Par exemple, pour un visiteur venant de Facebook :

?fbclid=IwAR3ndMqsEb-sqjQbZ_gXjwSVVczvHa-7fEIapoIm1tf-44CLg_LSbTpFjSs

ou

?fbclid=IwAR2dvfshI3i1QLWG-TFVF2_ai-VXJuaPZES39G5Lqbcn8QGjg4O5HWAZKuo

qui semble être des identifiants de session sur le réseau social

Créeront un cache par visiteur lors d'une première visite. Si ce même
visiteur revient avec le même fbclid avant la fin du délai
"jusqueminuit" le cache existant est renvoyé.

Cordialement,

Eric

Les traces :

nb recalcul| id_article :

1 article 24
1 article 54
1 article 56
1 article 57
3 article 58

Les logs pour l'article 58 :

[Fri Jan 04 02:33:25.386195 2019] [proxy_fcgi:error] [pid 1990:tid
140708826236672] [client aaa.aaa.aaa.aaa:6398] AH01071: Got error 'PHP
message: Recalcul squelette cachelab article 58 pour :
77495secondes\n', referer: http://m.facebook.com/
[Fri Jan 04 07:25:26.439604 2019] [proxy_fcgi:error] [pid 1990:tid
140708859807488] [client bbb.bbb.bbb.bbb:49401] AH01071: Got error 'PHP
message: Recalcul squelette cachelab article 58 pour :
59974secondes\n', referer: https://www.facebook.com/
[Fri Jan 04 09:46:13.320769 2019] [proxy_fcgi:error] [pid 1991:tid
140709172291328] [client ccc.ccc.ccc.ccc:51079] AH01071: Got error 'PHP
message: Recalcul squelette cachelab article 58 pour :
51527secondes\n', referer: https://www.facebook.com/

access logs :

aaa\.aaa\.aaa\.aaa \- \- \[04/Jan/2019:02:33:24 \+0100\] "GET /article58
HTTP/2\.0" 200 52897 "http://m.facebook.com/" "Mozilla/5\.0 \(Linux;
Android 8\.0\.0; SM\-G965F Build/R16NW; wv\) AppleWebKit/537\.36 \(KHTML,
like Gecko\) Version/4\.0 Chrome/71\.0\.3578\.99 Mobile Safari/537\.36
\[FB\_IAB/FB4A;FBAV/202\.0\.0\.40\.99;\]"

bbb\.bbb\.bbb\.bbb \- \- \[04/Jan/2019:07:25:25 \+0100\] "GET
/article58?fbclid=IwAR3ndMqsEb\-sqjQbZ\_gXjwSVVczvHa\-7fEIapoIm1tf\-
44CLg\_LSbTpFjSs HTTP/2\.0" 200 54693 "https://www.facebook.com/"
"Mozilla/5\.0 \(Windows NT 6\.1; Win64; x64\) AppleWebKit/537\.36 \(KHTML,
like Gecko\) Chrome/71\.0\.3578\.98 Safari/537\.36"

66\.249\.92\.49 \- \- \[04/Jan/2019:07:25:52 \+0100\] "GET
/article58?fbclid=IwAR3ndMqsEb\-sqjQbZ\_gXjwSVVczvHa\-7fEIapoIm1tf\-
44CLg\_LSbTpFjSs HTTP/1\.1" 200 21441 "\-" "Mediapartners\-Google"

111\.111\.111\.111 \- \- \[04/Jan/2019:08:40:27 \+0100\] "GET
/article58 HTTP/2\.0" 200 56080 "http://m.facebook.com/" "Mozilla/5\.0
\(Linux; Android 7\.1\.1; TA\-1032 Build/NMF26O; wv\) AppleWebKit/537\.36
\(KHTML, like Gecko\) Version/4\.0 Chrome/71\.0\.3578\.99 Mobile
Safari/537\.36 \[FB\_IAB/FB4A;FBAV/202\.0\.0\.40\.99;\]"

222\.222\.222\.222 \- \- \[04/Jan/2019:09:24:18 \+0100\] "GET /article58
HTTP/2\.0" 200 53212 "http://m.facebook.com/" "Mozilla/5\.0 \(Linux;
Android 8\.1\.0; ONEPLUS A5010 Build/OPM1\.171019\.011; wv\)
AppleWebKit/537\.36 \(KHTML, like Gecko\) Version/4\.0 Chrome/71\.0\.3578\.99
Mobile Safari/537\.36 \[FB\_IAB/FB4A;FBAV/202\.0\.0\.40\.99;\]"

ccc\.ccc\.ccc\.ccc\- \- \[04/Jan/2019:09:46:11 \+0100\] "GET
/article58?fbclid=IwAR1\-aXkNnqDf5YnB0pmSzl3T6BzrMq\-
xpL06LiUJtMXmQ3dpUBaW6\-7pQJs HTTP/2\.0" 200 55917 "https://www.facebook.
com/" "Mozilla/5\.0 \(Windows NT 6\.1; Win64; x64\) AppleWebKit/537\.36
\(KHTML, like Gecko\) Chrome/71\.0\.3578\.98 Safari/537\.36"

66\.249\.66\.50 \- \- \[04/Jan/2019:09:52:24 \+0100\] "GET /article58 HTTP/1\.1"
200 51539 "\-" "Mozilla/5\.0 \(Linux; Android 6\.0\.1; Nexus 5X
Build/MMB29P\) AppleWebKit/537\.36 \(KHTML, like Gecko\)
Chrome/41\.0\.2272\.96 Mobile Safari/537\.36 \(compatible; Googlebot/2\.1; \+h
ttp://www\.google\.com/bot\.html\)"

333\.333\.333\.333 \- \- \[04/Jan/2019:14:12:28 \+0100\] "GET /article58
HTTP/2\.0" 200 52219 "http://m.facebook.com/" "Mozilla/5\.0 \(Linux;
Android 8\.0\.0; SM\-G930F Build/R16NW; wv\) AppleWebKit/537\.36 \(KHTML,
like Gecko\) Version/4\.0 Chrome/71\.0\.3578\.99 Mobile Safari/537\.36
\[FB\_IAB/FB4A;FBAV/202\.0\.0\.40\.99;\]"

444\.444\.444\.444 \- \- \[04/Jan/2019:14:35:43 \+0100\] "GET /article58
HTTP/2\.0" 200 53477 "referer" "Mozilla/5\.0 \(X11; Ubuntu; Linux x86\_64;
rv:64\.0\) Gecko/20100101 Firefox/64\.0"

444\.444\.444\.444 \- \- \[04/Jan/2019:15:05:17 \+0100\] "GET /article58
HTTP/2\.0" 200 50733 "referer" "Mozilla/5\.0 \(X11; Ubuntu; Linux x86\_64;
rv:64\.0\) Gecko/20100101 Firefox/64\.0"

En effet, on peut les virer dans un fichier .htaccess comme ça

# attaque des zombies facebook
RewriteCond %{QUERY_STRING} ^(.*)&?fbclid=[^&]+&?(.*)$ [NC]
RewriteRule ^(.*)$ /$1?%1%2 [R=301,L]

Dans les stats c’est géré depuis récemment pour ne pas compter des refferers différents.
https://zone.spip.net/trac/spip-zone/changeset/112346/spip-zone

BoOz

Le ven. 4 janv. 2019 à 16:16, eric <webmaster@opalesurfcasting.net> a écrit :

Les traces :

nb recalcul| id_article :

1 article 24
1 article 54
1 article 56
1 article 57
3 article 58

Les logs pour l’article 58 :

[Fri Jan 04 02:33:25.386195 2019] [proxy_fcgi:error] [pid 1990:tid
140708826236672] [client aaa.aaa.aaa.aaa:6398] AH01071: Got error 'PHP
message: Recalcul squelette cachelab article 58 pour :
77495secondes\n', referer: [http://m.facebook.com/](http://m.facebook.com/)
[Fri Jan 04 07:25:26.439604 2019] [proxy_fcgi:error] [pid 1990:tid
140708859807488] [client bbb.bbb.bbb.bbb:49401] AH01071: Got error 'PHP
message: Recalcul squelette cachelab article 58 pour :
59974secondes\n', referer: [https://www.facebook.com/](https://www.facebook.com/)
[Fri Jan 04 09:46:13.320769 2019] [proxy_fcgi:error] [pid 1991:tid
140709172291328] [client ccc.ccc.ccc.ccc:51079] AH01071: Got error 'PHP
message: Recalcul squelette cachelab article 58 pour :
51527secondes\n', referer: [https://www.facebook.com/](https://www.facebook.com/)

access logs :

aaa.aaa.aaa.aaa - - [04/Jan/2019:02:33:24 +0100] "GET /article58
HTTP/2.0" 200 52897 "[http://m.facebook.com/](http://m.facebook.com/)" "Mozilla/5.0 (Linux;
Android 8.0.0; SM-G965F Build/R16NW; wv) AppleWebKit/537.36 (KHTML,
like Gecko) Version/4.0 Chrome/71.0.3578.99 Mobile Safari/537.36
[FB_IAB/FB4A;FBAV/[202.0.0.40](http://202.0.0.40).99;]"

bbb.bbb.bbb.bbb - - [04/Jan/2019:07:25:25 +0100] "GET
/article58?fbclid=IwAR3ndMqsEb-sqjQbZ_gXjwSVVczvHa-7fEIapoIm1tf-
44CLg_LSbTpFjSs HTTP/2.0" 200 54693 "[https://www.facebook.com/](https://www.facebook.com/)"
"Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML,
like Gecko) Chrome/71.0.3578.98 Safari/537.36"

66.249.92.49 - - [04/Jan/2019:07:25:52 +0100] "GET
/article58?fbclid=IwAR3ndMqsEb-sqjQbZ_gXjwSVVczvHa-7fEIapoIm1tf-
44CLg_LSbTpFjSs HTTP/1.1" 200 21441 "-" "Mediapartners-Google"

111.111.111.111 - - [04/Jan/2019:08:40:27 +0100] "GET
/article58 HTTP/2.0" 200 56080 "[http://m.facebook.com/](http://m.facebook.com/)" "Mozilla/5.0
(Linux; Android 7.1.1; TA-1032 Build/NMF26O; wv) AppleWebKit/537.36
(KHTML, like Gecko) Version/4.0 Chrome/71.0.3578.99 Mobile
Safari/537.36 [FB_IAB/FB4A;FBAV/[202.0.0.40](http://202.0.0.40).99;]"

222.222.222.222 - - [04/Jan/2019:09:24:18 +0100] "GET /article58
HTTP/2.0" 200 53212 "[http://m.facebook.com/](http://m.facebook.com/)" "Mozilla/5.0 (Linux;
Android 8.1.0; ONEPLUS A5010 Build/OPM1.171019.011; wv)
AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/71.0.3578.99
Mobile Safari/537.36 [FB_IAB/FB4A;FBAV/[202.0.0.40](http://202.0.0.40).99;]"

ccc.ccc.ccc.ccc- - [04/Jan/2019:09:46:11 +0100] "GET
/article58?fbclid=IwAR1-aXkNnqDf5YnB0pmSzl3T6BzrMq-
xpL06LiUJtMXmQ3dpUBaW6-7pQJs HTTP/2.0" 200 55917 "[https://www.facebook](https://www.facebook).
com/" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36
(KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36"

66.249.66.50 - - [04/Jan/2019:09:52:24 +0100] "GET /article58 HTTP/1.1"
200 51539 "-" "Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X
Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/41.0.2272.96 Mobile Safari/537.36 (compatible; Googlebot/2.1; +h
ttp://[www.google.com/bot.html](http://www.google.com/bot.html))"

333.333.333.333 - - [04/Jan/2019:14:12:28 +0100] "GET /article58
HTTP/2.0" 200 52219 "[http://m.facebook.com/](http://m.facebook.com/)" "Mozilla/5.0 (Linux;
Android 8.0.0; SM-G930F Build/R16NW; wv) AppleWebKit/537.36 (KHTML,
like Gecko) Version/4.0 Chrome/71.0.3578.99 Mobile Safari/537.36
[FB_IAB/FB4A;FBAV/[202.0.0.40](http://202.0.0.40).99;]"

444.444.444.444 - - [04/Jan/2019:14:35:43 +0100] "GET /article58
HTTP/2.0" 200 53477 "referer" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64;
rv:64.0) Gecko/20100101 Firefox/64.0"

444.444.444.444 - - [04/Jan/2019:15:05:17 +0100] "GET /article58
HTTP/2.0" 200 50733 "referer" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64;
rv:64.0) Gecko/20100101 Firefox/64.0"

----
[spip-zone@rezo.net](mailto:spip-zone@rezo.net) - [https://listes.rezo.net/mailman/listinfo/spip-zone](https://listes.rezo.net/mailman/listinfo/spip-zone)

Le 04/01/2019 à 15:52, eric a écrit :

- utilisation du filtre "jusqueminuit" : provoque une réécriture du
cache à minuit 5 minutes

Attention j'ai inclu le filtre jusqueminuit dans le plugin cachelab.

Je suis pas certain que c'est une bonne idée,
car il faudrait aussi jusquefindumois, jusquenouvelannee, jusquefindumonde, etc,
et donc il serait mieux d'avoir une notion plus générale d'échéance...

Mais en attendant c'est dedans avec ce nommage,
et donc il te faudra retirer la définition de cette fonction de ton propre code,
lorsque tu feras la mise à jour, pour ne pas avoir une double définition...
ou renommer ta version si tu maintiens un code légèrement différent.

JLuc

Le vendredi 04 janvier 2019 à 17:04 +0100, JLuc a écrit :

Le 04/01/2019 à 15:52, eric a écrit :
>
> - utilisation du filtre "jusqueminuit" : provoque une réécriture du
> cache à minuit 5 minutes
Attention j'ai inclu le filtre jusqueminuit dans le plugin cachelab.

Je suis resté sur la version 0.11.2, sans "jusqueminuit".

Et toute invalidation de cache inactivée, toujours sur
memoization/filecache