SlideShare une entreprise Scribd logo
< Générer
la version statique
d’un site Wordpress />
Nicolas Juen - WordCamp Paris 2019
RETOUR D'EXPÉRIENCES
< Nicolas Juen />
➔ Background Tech
➔ 10 ans d’âge WordPress
➔ CTO chez BeAPI
2
3
< Quelques chiffres />
~5000articles
4
~5000articles
Médias / Catégories / Étiquettes /
Auteurs / Date / ...
5
90msmaximum / pages
6
90msmaximum / pages
20Go de données / 40 catégories /
10 000 url / ...
7
< Quelles options ? />
8
➔ Hardypress
➔ Shifter
Service externe
➔ Simply Static
➔ WP2Static
Extensions
➔ HTTrack
➔ Web Dumper
Logiciels
9
< Services externes />
Hors de question pour la DSI, on abandonne la solution.
10
< Extensions />
Que se soit Simply Static ou WP2Static, ça ne scale pas !
11
< Logiciels />
Ces solutions étaient bien il y a longtemps mais plus des
solutions locales que des utilitaires faciles d’utilisation.
12
Tentons autre chose !
=
13
< Tentatives />
14
< Tentative 1 />
Extension sans les médias
➔ Rsync
➔ WP-CLI
➔ 40 à 50 minutes
15
< Tentative 2 />
Extension sans les médias
avec WP-Rocket
➔ URL manquantes
➔ 30 à 40 minutes
16
17
Puis… La lumière fut. 💡💡💡
< La solution/>
WGET :
l’utilitaire
miracle
➔ FTP
➔ HTTP
➔ Etc.
18
< La solution/>
WGET :
l’utilitaire
miracle
--mirror
19
15 / 35 min
Génération entre
20
< Le processus />
21
< Le processus 1/6/>
Génération d’un lock
22
< Le processus 2/6/>
wget -X
content/uploads/
Récupération des contenus sans les médias, images et
scripts
23
< Le processus 2/6/>
--ignore-tags=script,img -A "*.*" 
Récupération des contenus sans les médias, images et
scripts
24
< Le processus 2/6/>
--mirror 
Récupération des contenus sans les médias, images et
scripts
25
< Le processus 2/6/>
--adjust-extension 
Récupération des contenus sans les médias, images et
scripts
26
< Le processus 2/6/>
--page-requisites 
Récupération des contenus sans les médias, images et
scripts
27
< Le processus 2/6/>
--quiet http://url
Récupération des contenus sans les médias, images et
scripts
28
< WPGET : l’utilitaire miracle/>
--quiet http://url
wget -X
content/uploads/--ignore-tags=script,img -A "*.*"
--mirror 
--adjust-extension 
--page-requisites 
29
< Le processus 3/6/>
Faire ça de façon simultanée
avec &
30
< Le processus 4/6/>
Récupérer les sitemaps, que
wget ne supporte pas
wget${from_url}/
sitemap_index.xml --output-document - |
egrep -o "/(.+).xml" | wget--
base=${from_url} -i -
31
< Le processus 5/6/>
Rsync du contenu, médias,
caches, CSS, JS
32
< Le processus 6/6/>
Retirer le lock et informer la
DSI que la copie est terminée
33
34
Propre. 🎉🎉🎉
35
< Plus loin />
< Plus loin/>
Voir du côté de GatsbyJS
● Avantages
○ Créé pour la performance
○ Statique complet
○ Pré-chargement de données
● Moins
○ Stack plus compliquée
○ Scalable ?
○ Compétences REACT ++
36
Des questions ?
merci
et bon WordCamp à toutes et à tous !

Contenu connexe

Similaire à WordCamp Paris 2019 - Générer la version statique de son site

Julien Maitrehenry - Docker, ça mange quoi au printemps
Julien Maitrehenry - Docker, ça mange quoi au printempsJulien Maitrehenry - Docker, ça mange quoi au printemps
Julien Maitrehenry - Docker, ça mange quoi au printempsWeb à Québec
 
Les méthodes agiles dans TFS
Les méthodes agiles dans TFSLes méthodes agiles dans TFS
Les méthodes agiles dans TFSDenis Voituron
 
Les outils automatisés de validation de l'accessibilité Web
Les outils automatisés de validation de l'accessibilité WebLes outils automatisés de validation de l'accessibilité Web
Les outils automatisés de validation de l'accessibilité WebPatrick Demers
 
Kiwiparty 2011 - Optimisation des sites internet
Kiwiparty 2011 - Optimisation des sites internetKiwiparty 2011 - Optimisation des sites internet
Kiwiparty 2011 - Optimisation des sites internetDevclic
 
Morning tech #2 - Démarche performance slides
Morning tech #2 - Démarche performance slidesMorning tech #2 - Démarche performance slides
Morning tech #2 - Démarche performance slidesOxalide
 
Oxalide Morning tech #2 - démarche performance
Oxalide Morning tech #2 - démarche performanceOxalide Morning tech #2 - démarche performance
Oxalide Morning tech #2 - démarche performanceLudovic Piot
 
Prérequis au développement google android
Prérequis au développement google androidPrérequis au développement google android
Prérequis au développement google androidThierry Gayet
 
Solution OODRIVE ADBACKUP Satellite
Solution OODRIVE ADBACKUP SatelliteSolution OODRIVE ADBACKUP Satellite
Solution OODRIVE ADBACKUP SatelliteLaurent Rouable
 
Retour d'expérience technique Go, gRPC, Kubernetes
Retour d'expérience technique Go, gRPC, KubernetesRetour d'expérience technique Go, gRPC, Kubernetes
Retour d'expérience technique Go, gRPC, KubernetesVincent Composieux
 
Acquia Cloud Extend - Votre Hébergement Drupal Acquia + Alterway
Acquia Cloud Extend - Votre Hébergement Drupal Acquia + AlterwayAcquia Cloud Extend - Votre Hébergement Drupal Acquia + Alterway
Acquia Cloud Extend - Votre Hébergement Drupal Acquia + AlterwayCyril Reinhard
 
Deployer PHP et MariaDB dans Azure - TechDays
Deployer PHP et MariaDB dans Azure - TechDaysDeployer PHP et MariaDB dans Azure - TechDays
Deployer PHP et MariaDB dans Azure - TechDaysChristophe Villeneuve
 
Déployez votre site PHP / MariaDB, simplement et rapidement dans Azure
Déployez votre site PHP / MariaDB, simplement et rapidement dans AzureDéployez votre site PHP / MariaDB, simplement et rapidement dans Azure
Déployez votre site PHP / MariaDB, simplement et rapidement dans AzureMicrosoft
 
[FR] Capture vidéo avec HTML5
[FR] Capture vidéo avec HTML5[FR] Capture vidéo avec HTML5
[FR] Capture vidéo avec HTML5Thomas Bassetto
 
Mariadb pour les developpeurs - OSDC
Mariadb pour les developpeurs - OSDCMariadb pour les developpeurs - OSDC
Mariadb pour les developpeurs - OSDCChristophe Villeneuve
 
Spring Boot & Containers - Do's & Don'ts
Spring Boot & Containers - Do's & Don'tsSpring Boot & Containers - Do's & Don'ts
Spring Boot & Containers - Do's & Don'tsJulien Wittouck
 
TIAD : Choisir et construire son projet d’automatisation
TIAD : Choisir et construire son projet d’automatisationTIAD : Choisir et construire son projet d’automatisation
TIAD : Choisir et construire son projet d’automatisationThe Incredible Automation Day
 
Vue, j’avais pas vu !
Vue, j’avais pas vu !Vue, j’avais pas vu !
Vue, j’avais pas vu !Bruno Bonnin
 
vue j'avais pas vu !!
vue j'avais pas vu !!vue j'avais pas vu !!
vue j'avais pas vu !!Manuel Adele
 
Un site sans CMS (Teknseo 2014)
Un site sans CMS (Teknseo 2014)Un site sans CMS (Teknseo 2014)
Un site sans CMS (Teknseo 2014)Didcode
 

Similaire à WordCamp Paris 2019 - Générer la version statique de son site (20)

Julien Maitrehenry - Docker, ça mange quoi au printemps
Julien Maitrehenry - Docker, ça mange quoi au printempsJulien Maitrehenry - Docker, ça mange quoi au printemps
Julien Maitrehenry - Docker, ça mange quoi au printemps
 
Les méthodes agiles dans TFS
Les méthodes agiles dans TFSLes méthodes agiles dans TFS
Les méthodes agiles dans TFS
 
Optimisation de son site web
Optimisation de son site webOptimisation de son site web
Optimisation de son site web
 
Les outils automatisés de validation de l'accessibilité Web
Les outils automatisés de validation de l'accessibilité WebLes outils automatisés de validation de l'accessibilité Web
Les outils automatisés de validation de l'accessibilité Web
 
Kiwiparty 2011 - Optimisation des sites internet
Kiwiparty 2011 - Optimisation des sites internetKiwiparty 2011 - Optimisation des sites internet
Kiwiparty 2011 - Optimisation des sites internet
 
Morning tech #2 - Démarche performance slides
Morning tech #2 - Démarche performance slidesMorning tech #2 - Démarche performance slides
Morning tech #2 - Démarche performance slides
 
Oxalide Morning tech #2 - démarche performance
Oxalide Morning tech #2 - démarche performanceOxalide Morning tech #2 - démarche performance
Oxalide Morning tech #2 - démarche performance
 
Prérequis au développement google android
Prérequis au développement google androidPrérequis au développement google android
Prérequis au développement google android
 
Solution OODRIVE ADBACKUP Satellite
Solution OODRIVE ADBACKUP SatelliteSolution OODRIVE ADBACKUP Satellite
Solution OODRIVE ADBACKUP Satellite
 
Retour d'expérience technique Go, gRPC, Kubernetes
Retour d'expérience technique Go, gRPC, KubernetesRetour d'expérience technique Go, gRPC, Kubernetes
Retour d'expérience technique Go, gRPC, Kubernetes
 
Acquia Cloud Extend - Votre Hébergement Drupal Acquia + Alterway
Acquia Cloud Extend - Votre Hébergement Drupal Acquia + AlterwayAcquia Cloud Extend - Votre Hébergement Drupal Acquia + Alterway
Acquia Cloud Extend - Votre Hébergement Drupal Acquia + Alterway
 
Deployer PHP et MariaDB dans Azure - TechDays
Deployer PHP et MariaDB dans Azure - TechDaysDeployer PHP et MariaDB dans Azure - TechDays
Deployer PHP et MariaDB dans Azure - TechDays
 
Déployez votre site PHP / MariaDB, simplement et rapidement dans Azure
Déployez votre site PHP / MariaDB, simplement et rapidement dans AzureDéployez votre site PHP / MariaDB, simplement et rapidement dans Azure
Déployez votre site PHP / MariaDB, simplement et rapidement dans Azure
 
[FR] Capture vidéo avec HTML5
[FR] Capture vidéo avec HTML5[FR] Capture vidéo avec HTML5
[FR] Capture vidéo avec HTML5
 
Mariadb pour les developpeurs - OSDC
Mariadb pour les developpeurs - OSDCMariadb pour les developpeurs - OSDC
Mariadb pour les developpeurs - OSDC
 
Spring Boot & Containers - Do's & Don'ts
Spring Boot & Containers - Do's & Don'tsSpring Boot & Containers - Do's & Don'ts
Spring Boot & Containers - Do's & Don'ts
 
TIAD : Choisir et construire son projet d’automatisation
TIAD : Choisir et construire son projet d’automatisationTIAD : Choisir et construire son projet d’automatisation
TIAD : Choisir et construire son projet d’automatisation
 
Vue, j’avais pas vu !
Vue, j’avais pas vu !Vue, j’avais pas vu !
Vue, j’avais pas vu !
 
vue j'avais pas vu !!
vue j'avais pas vu !!vue j'avais pas vu !!
vue j'avais pas vu !!
 
Un site sans CMS (Teknseo 2014)
Un site sans CMS (Teknseo 2014)Un site sans CMS (Teknseo 2014)
Un site sans CMS (Teknseo 2014)
 

Dernier

Augmentez vos conversions en ligne : les techniques et outils qui marchent vr...
Augmentez vos conversions en ligne : les techniques et outils qui marchent vr...Augmentez vos conversions en ligne : les techniques et outils qui marchent vr...
Augmentez vos conversions en ligne : les techniques et outils qui marchent vr...OsharaInc
 
cours Systèmes de Gestion des Identités.pdf
cours Systèmes de Gestion des Identités.pdfcours Systèmes de Gestion des Identités.pdf
cours Systèmes de Gestion des Identités.pdfHajer Boujezza
 
Modèles de contrôle d accès_ RBAC (Role Based Access Control).pdf
Modèles de contrôle d accès_ RBAC (Role Based Access Control).pdfModèles de contrôle d accès_ RBAC (Role Based Access Control).pdf
Modèles de contrôle d accès_ RBAC (Role Based Access Control).pdfHajer Boujezza
 
Contrôle d’accès et Gestion des identités: Terminologies et Protocoles d’auth...
Contrôle d’accès et Gestion des identités: Terminologies et Protocoles d’auth...Contrôle d’accès et Gestion des identités: Terminologies et Protocoles d’auth...
Contrôle d’accès et Gestion des identités: Terminologies et Protocoles d’auth...Hajer Boujezza
 
Slides du webinaire de l'Infopole sur l'IA
Slides du webinaire de l'Infopole sur l'IASlides du webinaire de l'Infopole sur l'IA
Slides du webinaire de l'Infopole sur l'IAInfopole1
 
Protéger l'intégrité de son environnement numérique
Protéger l'intégrité de son environnement numériqueProtéger l'intégrité de son environnement numérique
Protéger l'intégrité de son environnement numériquePaperjam_redaction
 

Dernier (6)

Augmentez vos conversions en ligne : les techniques et outils qui marchent vr...
Augmentez vos conversions en ligne : les techniques et outils qui marchent vr...Augmentez vos conversions en ligne : les techniques et outils qui marchent vr...
Augmentez vos conversions en ligne : les techniques et outils qui marchent vr...
 
cours Systèmes de Gestion des Identités.pdf
cours Systèmes de Gestion des Identités.pdfcours Systèmes de Gestion des Identités.pdf
cours Systèmes de Gestion des Identités.pdf
 
Modèles de contrôle d accès_ RBAC (Role Based Access Control).pdf
Modèles de contrôle d accès_ RBAC (Role Based Access Control).pdfModèles de contrôle d accès_ RBAC (Role Based Access Control).pdf
Modèles de contrôle d accès_ RBAC (Role Based Access Control).pdf
 
Contrôle d’accès et Gestion des identités: Terminologies et Protocoles d’auth...
Contrôle d’accès et Gestion des identités: Terminologies et Protocoles d’auth...Contrôle d’accès et Gestion des identités: Terminologies et Protocoles d’auth...
Contrôle d’accès et Gestion des identités: Terminologies et Protocoles d’auth...
 
Slides du webinaire de l'Infopole sur l'IA
Slides du webinaire de l'Infopole sur l'IASlides du webinaire de l'Infopole sur l'IA
Slides du webinaire de l'Infopole sur l'IA
 
Protéger l'intégrité de son environnement numérique
Protéger l'intégrité de son environnement numériqueProtéger l'intégrité de son environnement numérique
Protéger l'intégrité de son environnement numérique
 

WordCamp Paris 2019 - Générer la version statique de son site

Notes de l'éditeur

  1. Page de couverture 1 - Remplacer par la bonne date 2 - Le titre principal est en noir, encadré par “<” et “/>” en blanc. Ce titre est de maximum trois lignes.
  2. PAGE À REPRENDRE TEL QUEL
  3. PAGE À REPRENDRE TEL QUEL
  4. ~ 5000 articles 30 000 images : 20 Go de données 40 catégories 10aine ~ d’étiquettes + de 100 partenaires Calculons : 5000 articles à 10 par page : 500 pages + la pagination des catégories + celles de étiquettes + sitemap + landing pages = ~10 000 urls à exporter en 15 minutes = 0,09 secondes maximum par page ~ Mais initialement plus de 20 000 articles, des centaines d’étiquettes et des dizaines de catégories !
  5. ~ 5000 articles 30 000 images : 20 Go de données 40 catégories 10aine ~ d’étiquettes + de 100 partenaires Calculons : 5000 articles à 10 par page : 500 pages + la pagination des catégories + celles de étiquettes + sitemap + landing pages = ~10 000 urls à exporter en 15 minutes = 0,09 secondes maximum par page ~ Mais initialement plus de 20 000 articles, des centaines d’étiquettes et des dizaines de catégories !
  6. PAGE À REPRENDRE TEL QUEL
  7. Plus on a contenus, plus ça va être long, ces outils exportent et copient les médias etc. Ils ne font pas de différentiels efficaces entre les exports, Chaque page générée = 2 processus PHP, un pour le “worker” un pour la génération de la page. Tentative 1 : serveur totalement perdu, (plus de 600 de load average) pour une très gros serveur (24CPU, 64 de RAM) pour une config NGINX prévue pour consommer au plus. Plus de 4 heures d’export ...
  8. On ne prend pas les médias : rsync On essaye d’optimiser les plugins avec des commandes WPCLI: On est entre 40 et 50 minutes ! OUF ! mais ce n’est toujours pas ça !
  9. Tentative 3 : Ajout de WP-Rocket, on met en cache et l’exportateur récupère tout ! Mieux, mais les exports prennent entre 30 et 40 minutes, toujours pas assez… Des urls sont ratées dans l’export…
  10. WGET : un peu comme curl, mais en moins compliqué, plus user friendly. Permet d’exploiter du HTTP, HTTPS, FTP en non interactif, une fois la commande lançée pas d’intervention. Peut être utilisée pour télécharger le contenu d’un FTP en local facilement par exemple. Permet surtout de télécharger et faire des miroirs de sites, complètement autonomes, vive l’option --mirror !
  11. Tentative 3 : Ajout de WP-Rocket, on met en cache et l’exportateur récupère tout ! Mieux, mais les exports prennent entre 30 et 40 minutes, toujours pas assez… Des urls sont ratées dans l’export…
  12. Tentative 3 : Ajout de WP-Rocket, on met en cache et l’exportateur récupère tout ! Mieux, mais les exports prennent entre 30 et 40 minutes, toujours pas assez… Des urls sont ratées dans l’export…
  13. -X : pour ne pas prendre les médias -ignore-tags : pour ne pas prendre les placeholder de lazyload, pas les scripts car urlencodées dans les JSON : incompatible --mirror : récursif de façon infinie, vérifie le timestamp pour ne pas télécharger 2 fois,
  14. -X : pour ne pas prendre les médias
  15. -ignore-tags : pour ne pas prendre les placeholder de lazyload, pas les scripts car urlencodées dans les JSON : incompatible
  16. --mirror : récursif de façon infinie, vérifie le timestamp pour ne pas télécharger 2 fois,
  17. Si on DL des pages disant html dans le content-type et que ça ne fini pas par .html alors il transforme en .html exemple les fichiers .asp.
  18. Télécharger tout ce qui est nécessaire au fonctionnement de la page, quelque soit la profondeur atteinte.