Jan 132013
Si vos sites ne sont pas parcourus régulièrement, les pages ne seront plus dans votre cache varnish, vous pourriez augmenter le ttl de vos pages mais si vous mettez à jour régulièrement vos sites cela peut être embêtant.
La solution, créer un cron qui parcours votre site avec ce script :
#!/bin/bash Sitemap='www.exemple.com/sitemap.xml' Site='www.exemple.com' wget='/usr/bin/wget' grep='/bin/grep' awk='/usr/bin/awk' find='/usr/bin/find' mount='/bin/mount' umount='/bin/umount' sed='/bin/sed' wc='/usr/bin/wc' cut='/usr/bin/cut' if [ `$mount -l | $grep /tmp/wget | $wc -l` -gt 0 ] ; then exit 1 ; fi touch /tmp/cookies.txt $wget -q -O /dev/null "URL pour régénérer le sitemap" if [ ! -d /tmp/wget ] ; then mkdir /tmp/wget fi $mount -t tmpfs -o size=25M tmpfs /tmp/wget cd /tmp/wget for site in $Sitemap ; do for url in `$wget -q -O - "http://$site" | $grep '<loc>' | $awk -F'<loc>' '{print $2}' | $awk -F'</loc>' '{print $1}'` ; do $wget -q -p --save-cookies /tmp/cookies.txt --load-cookies /tmp/cookies.txt "$url" for index in `$find . -type f | $sed 's:^./::' | $grep index.html` ; do for href in `$grep href "$index" | $cut -d"'" -f2 | $cut -d'"' -f2 | $grep http | $grep "$Site"` ; do $wget -q -p --save-cookies /tmp/cookies.txt --load-cookies /tmp/cookies.txt --header='Accept-Encoding: gzip, deflate' "$href" $wget -q -p --header='Accept-Encoding: gzip, deflate' "$href" done done for file in `$find . -type f | $sed 's:^./::' | $grep -v index.html` ; do $wget -q -O /dev/null --save-cookies /tmp/cookies.txt --load-cookies /tmp/cookies.txt --header='Accept-Encoding: gzip, deflate' "http://$file" $wget -q -O /dev/null --header='Accept-Encoding: gzip, deflate' "http://$file" done for file in `$find . -type f | $sed 's:^./::' | $grep index.html | $sed 's:index.html::'` ; do $wget -q -O /dev/null --save-cookies /tmp/cookies.txt --load-cookies /tmp/cookies.txt --header='Accept-Encoding: gzip, deflate' "http://$file" $wget -q -O /dev/null --header='Accept-Encoding: gzip, deflate' "http://$file" done rm -rf /tmp/wget/* done done rm /tmp/cookies.txt cd /tmp/ ; $umount /tmp/wget ; rm -rf /tmp/wget
Maj 13/01/12 : Ajout href
Merci pour ce script, je vais le tester.
Je viens de me mettre à varnish et je cherchais une sorte de crawler, comme j’avais l’habitude avec le module Boost de Drupal.
Je ne pensais pas à mon sitemap.xml, que d’ailleurs je n’avais d’ailleurs jamais regardé.
C’est fait pour ça quand même !
Je vais le cronner une fois par jour, j’ai mis un TTL à 1 jour.
Pour l’instant il y a environ 7000 url dans mon sitemap.
C’est la bon réglage selon toi ?
Sébastien Lucas
http://www.archiref.com
Le TTL dépend de ton site et de la fréquence de sa mise à jour.
Personnellement je fais crawler mon site plus vite que mon ttl pour remettre mon site en cache plus rapidement (fréquence 5min, TTL 1h)
Sorry it don’t work for me.
The script quit early
I don’t understand how you fill $sitemap variable with sitemap content.
for site in $Sitemap ; do
Neither do I understand this line
$wget -q -O /dev/null « url to regenerate sitemap »
Other problem for me my sitemap is split in several pages
so I would need several site map url like
http://www.archiref.com/fr/sitemap.xml?page=1
Thanks
Au début du script remplacer
par (Sans le http://)
$wget -q -O /dev/null “url to regenerate sitemap” sert si vous avez un script qui régénère le sitemap si il est statique.
Vous pouvez désactiver cette ligne, car le votre est dynamique.