1. ✅ Apprenez une METHODE qui marche pour votre SEO ! Formation à distance avec Olivier Duffez et Fabien Facériès + aide pour prise en charge du financement
    Rejeter la notice

Linux/SSH : Quel crawler pour générer le cache de mon site ?

Discussion dans 'Administration d'un site Web' créé par milkiway, 28 Mars 2011.

  1. milkiway
    milkiway WRInaute accro
    Inscrit:
    3 Février 2004
    Messages:
    4 237
    J'aime reçus:
    0
    Bonjour,

    J'ai un site dont le calcul des pages est très long (de l'ordre de 3 secondes) car les traitements sont très complexes. La page reste valide 24h donc je la met en cache après sa première génération (en PHP je vide le contenu du buffer dans un fichier statique qui sera appelé la prochaine fois). Le temps de génération passe de 3 secondes à 0.09 secondes. C'est parfait.

    Tous les soirs à 3h je vide le cache pour le renouveler.

    Question : comment faire pour forcer la génération du cache pendant la nuit (période de faible charge) ?
    Il faudrait que je crawle certaines pages, mais pas toutes. Quel outil (crawler) utiliser pour ça ? Comment procédez vous ?
    J'ai un serveur sous Linux OVH Release 2.
    Actuellement sur ma version de test je crawle manuellement sur Windows avec Xenu.

    Question bonus sur Xenu : comment faire pour que Xenu ne crawle pas les images, ni les fichiers CSS/JS ?

    Un grand merci
     
  2. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    9 056
    J'aime reçus:
    294
  3. milkiway
    milkiway WRInaute accro
    Inscrit:
    3 Février 2004
    Messages:
    4 237
    J'aime reçus:
    0
    Merci Spout, décidément tu es partout.

    Tout simplement wget ? Bon. Reste plus qu'à trouver comment lui faire crawler tout le site SAUF *.gif, *.jpg, *.png, *.css, *.js, /dossier-specifique/, /url-specifique.html

    Il prend les regex ?
     
  4. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    9 056
    J'aime reçus:
    294
  5. aladdin
    aladdin WRInaute passionné
    Inscrit:
    29 Avril 2005
    Messages:
    1 246
    J'aime reçus:
    0
    et pourquoi pas un cache qui se met en place lors du premier accès à une page par un visiteur tout simplement ? le premier visiteur attendra 3s mais les autres non ...
     
  6. milkiway
    milkiway WRInaute accro
    Inscrit:
    3 Février 2004
    Messages:
    4 237
    J'aime reçus:
    0
    C'est déjà le cas. Mais si ce premier est Google Bot, il risque de ne pas aimer d'attendre 3 secondes par pages...
    Oui désolé mais je suis dans le train sur iphone et ma connexion edge saute toutes les 15 secondes.

    Merci pour les infos
     
  7. forty
    forty WRInaute passionné
    Inscrit:
    30 Octobre 2008
    Messages:
    1 929
    J'aime reçus:
    0
    il faut mettre en place un cron qui fait un wget de chacune des pages à rafraichir.
    Tu peux mettre prévoir un paramètre spécial à ton url qui va regénérer le cache automatiquement. C'est ce que j'ai fait sur un site. J'appelle l'url monsite.com/url-a-regenerer.htm?cache_renew
    et dans mon code j'ai :
    Si cache trop vieux ou si paramètre $_GET['cache_renew'] existe alors remplace le cache.
     
  8. milkiway
    milkiway WRInaute accro
    Inscrit:
    3 Février 2004
    Messages:
    4 237
    J'aime reçus:
    0
    C'est à n'y rien comprendre. wget -r http://www.monsite.com/ --delete-after -nd
    ne trouve que l'index.html et s'arrête... Sur mes autres sites je n'ai pas le problème.
    C'est fou !

    Forty, je fais plus simple : accès à la page. Existe t il un cache statique ? Si oui, on le délivre et on arrête, sinon, on le génère et on le stocke. Et tous les soirs à 3h un rm -r /cache/*
    Ca fonctionne très bien sur tous mes sites.
    Mais là il faut vraiment que je crawle le site car sans cache il est très lent.
     
  9. milkiway
    milkiway WRInaute accro
    Inscrit:
    3 Février 2004
    Messages:
    4 237
    J'aime reçus:
    0
    Forty, je viens de comprendre ce que tu disais. Effectivement c'est mieux. Tu génères le fichier cache en utilisant PHP et fopen, fwrite, fclose ou tu te sers du fichier généré par wget ?
     
  10. Leonick
    Leonick WRInaute accro
    Inscrit:
    8 Août 2004
    Messages:
    19 413
    J'aime reçus:
    0
    moi, c'est comme cela que je gère mes mises en cache : ça me permet de rajouter à ce cache des éléments à la volée
     
  11. forty
    forty WRInaute passionné
    Inscrit:
    30 Octobre 2008
    Messages:
    1 929
    J'aime reçus:
    0
    c'est ce que je fais mais je ne supprime pas mes caches. J'ai deux méthodes pour faire la mise à jour : quand le cache a plus de X heures ou quand j'ai un certain paramètre GET qui force la mise à jour. WGET permet d'appeler une page avec ce paramètre qui fait la mise à jour du cache. Il faut donc faire un script qui fait une boucle avec autant de WGET que de cache à rafraîchir.
     
  12. milkiway
    milkiway WRInaute accro
    Inscrit:
    3 Février 2004
    Messages:
    4 237
    J'aime reçus:
    0
    Le temps que tu me répondes c'est ce que j'ai fait. C'est bien mieux que mon précédent système merci pour l'idée.
    La dernière étape sera carrément d'utiliser wget pour générer le cache (et non PHP) pour aller encore plus vite.

    Et pour wget en boucle, impossible avec mes 26000+ URL. J'ai écrit un script qui liste la totalité des pages qui ont besoin d'être rafraichies la nuit tous les jours, le reste sera rafraichi par l'utilisateur.

    Merci !
     
  13. Julia41
    Julia41 WRInaute passionné
    Inscrit:
    31 Août 2007
    Messages:
    1 779
    J'aime reçus:
    0
  14. Leonick
    Leonick WRInaute accro
    Inscrit:
    8 Août 2004
    Messages:
    19 413
    J'aime reçus:
    0
    Après, reste à voir s'il est nécessaire de recréer le cache toutes les 24h. Sur mes sites, le cache est regénéré intégralement à la demande, mais sinon, je supprime la version en cache quand des changements surviennent pour cette page, dans le cas contraire, le cache peut servir plusieurs jours.
     
  15. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    9 056
    J'aime reçus:
    294
    Les traitements complexes c'est quoi ? Requêtes SQL ? Parsing XML ? Autre ?
    Il faut penser qu'il y a 3 types de cache, et tous mis ensemble ça boost bien:
    - Cache de l'output
    - Cache de datas
    - Cache d'Opcode
     
  16. milkiway
    milkiway WRInaute accro
    Inscrit:
    3 Février 2004
    Messages:
    4 237
    J'aime reçus:
    0
    Leonick : oui, mon contenu a une durée de validité de 24h, pas plus. Certaines sections ont une durée de vie de 2h mais il ne faut pas pousser.

    spout : ce qui est long, ce sont les requêtes SQL pour ma part.
    En fait deux étapes.
    L'une qui met à jour les données. Rien à faire niveau cache car tout change toutes les 24h. Je télécharge des fichiers XML, parse, traite, regex, dédoublonne, analyse, recherche, match, etc. puis import en base de données.

    L'autre : afficher une page qui va faire des requêtes dans ces données (va taper dans plusieurs bases de plusieurs 10aines de milliers de lignes) + appels récursifs à des web services.

    Là ma solution est donc de vider totalement mes données toutes les 24h, de forcer la régénération du cache en tâche de fond sur les pages critiques. Pour l'utilisateur c'est transparent et le site est en permanence accessible et rapidement.
    Mon cache : c'est la copie exacte de la page finale (son contenu HTML vidé dans un fichier). Je ne vois pas comment ça pourrait être plus rapide ?
     
  17. Leonick
    Leonick WRInaute accro
    Inscrit:
    8 Août 2004
    Messages:
    19 413
    J'aime reçus:
    0
    dans le cache, je ne met que le contenu sql travaillé, le reste est fait à la volée. Et donc je ne regénère le traitement du sql que si besoin et de façon hyper ciblée.
    pour ton cas, si avec les requêtes externes tu n'as que 250 lignes de ta table de 100 Klignes qui sont modifiées, tu n'auras besoin de regénérer que ces 250 caches, pas les 100 000
     
  18. RiPSO
    RiPSO WRInaute impliqué
    Inscrit:
    5 Octobre 2007
    Messages:
    967
    J'aime reçus:
    0
    euh... J'ai peut être pas compris la question mais je comprend pas pourquoi s'orienter vers un wget... Ce ne serait pas plus simple un cron avec un php-cli?
     
Chargement...
Similar Threads - Linux SSH crawler Forum Date
Wget (linux-gnu) : c'est quoi ? Administration d'un site Web 18 Septembre 2018
VPS Linux gratuit Administration d'un site Web 25 Mai 2018
Développer en PHP avec Linux ? Développement d'un site Web ou d'une appli mobile 17 Septembre 2015
[Linux] CPU augmente lentement sans jamais redescendre! Administration d'un site Web 1 Juillet 2015
Importation des données à une BD via CSV et commande linux Administration d'un site Web 5 Juin 2015
Application Linux chez Hébergeur Développement d'un site Web ou d'une appli mobile 13 Octobre 2014
[Linux] Droits d'écriture sur une clé USB (/media/) Développement d'un site Web ou d'une appli mobile 22 Septembre 2014
Forcer les www | Linux - 1and1 URL Rewriting et .htaccess 15 Août 2014
Différence de referencement entre windows et linux Débuter en référencement 2 Juillet 2013
Serveur mutualisé infomaniak Vs serveur virtuel xl linux 1&1 Administration d'un site Web 31 Janvier 2013