Technical seo tips and tricks actionnables 2018

Aymen Loukil
Aymen LoukilInternational SEO Consultant
1#seocamp@LoukilAymen
SEO Technique : Tips & Tricks
Actionnables pour 2018
Aymen Loukil
2#seocamp@LoukilAymen
Aymen Loukil
#TechnicalSEO #entrepreneur #semanticweb #speaker #ex-développeur
Consultant SEO International
https://www.aymen-loukil.com @LoukilAymen
3#seocamp@LoukilAymen
Performance
Les must-have Technical SEO 2018
Rendering & Crawl Sécurité Schema.org
4#seocamp@LoukilAymen
#perfmatters
5#seocamp@LoukilAymen
Imaginez..
30min à la porte du magasin
10min pour pouvoir changer de rayon
7min pour pouvoir toucher un produit
6#seocamp@LoukilAymen
La perception de l’attente
0 100ms 300ms 1000ms
10.000ms
Smooth Petit délai Tâche
normale
Perte de
focus
Frustration
3s : la conversion chute
7#seocamp@LoukilAymen
Le web est il rapide ?
13s
50%
20s 31s
25% 10%
Time To Interactive (Mobile) - Janvier 2018
Source http://beta.httparchive.org/reports/loading-speed
8#seocamp@LoukilAymen
Qu’est ce qui coûte ?
Parse Compile ExecuteDownload
Réseau Matériel (processeur, mémoire)
9#seocamp@LoukilAymen
“En performance, la taille
(du code) compte”
10#seocamp@LoukilAymen
“Le nombre de requêtes
compte aussi”
11#seocamp@LoukilAymen
Moyenne des connexions 3G/4G
France 14 Mbps
Denmark 24.41 Mbps
Japan 22 Mbps
Belgique 20 Mbps
Suisse 18.5 Mbps
State of Mobile Networks https://opensignal.com
USA 12.5 Mbps
12#seocamp@LoukilAymen
Un peu de réseau
Une page web en moyenne : 3.6Mb*
3.6 Mb
14 Mbps
= 25s
16s(Japan)
13#seocamp@LoukilAymen
La différence de matériel peut être mortelle
https://medium.com/dev-channel/the-cost-of-javascript-84009f51e99e
Parsing JS :
4s sur un iPhone 8 (800€)
Vs
14s sur un Motorolla G4 (200€)
14#seocamp@LoukilAymen
15#seocamp@LoukilAymen
Vous en avez vraiment besoin ?
- CTR ?
- Utilisé ?
- Faire autrement ?
- L’animation vitale ?
- AB test ?
16#seocamp@LoukilAymen
Coverage : code non utilisé
50% du code
n’est pas utilisé
[1.4MB potentiel
à gagner]* ctrl+shift+p [win]
17#seocamp@LoukilAymen
Alléger le code
Code non exécuté
Code exécuté
Une revue du code est nécessaire*
18#seocamp@LoukilAymen
Automatiser code coverage
https://www.npmjs.com/package/page-coverage
- Check systématique
- Release
- QA
19#seocamp@LoukilAymen
Splitter le code
- Uniquement ce qu’il faut / page
- On réduit le volume et donc le temps.
Sur wordpress regarder :
wp_enqueue_script et is_home()
20#seocamp@LoukilAymen
Et les scripts externes ?
Third party badges
21#seocamp@LoukilAymen
Bloquer le chargement d’une ressource
22#seocamp@LoukilAymen
Comparer
https://developers.google.com
Les scripts externes [non maitrisés] peuvent dégrader la performance
23#seocamp@LoukilAymen
Faire autrement, plus light
vanilla-js.com
35X plus rapide que jQuery
24#seocamp@LoukilAymen
JS est le plus coûteux des ressources
38 fois plus coûteux qu’un JPEG
25#seocamp@LoukilAymen
Optimiser le chemin critique
Donner en priorité ce qui est nécessaire au premier print et la ligne de flottaison
CC optimisé
CC non optimisé
26#seocamp@LoukilAymen
Les ressources chargées avant le rendu
Faites le tri dans les ressources en vert
https://www.webpagetest.org/
27#seocamp@LoukilAymen
JavaScript est une ressource bloquante
Pour chaque code JS, le navigateur bloque la construction de la page (rendu)=> ++délai
<script src="app.js" async></script>
JS essentiels en Async (exécution en fin de téléchargement)
JS non-essentiels en Defer (exécution en fin de parsing du document)
<script src="app.js" defer></script>
28#seocamp@LoukilAymen
Async, Defer
29#seocamp@LoukilAymen
CSS est une ressource bloquante
Utilisez la propriété media
1- <link href="style.css" rel="stylesheet"> Bloque le rendu
2- <link href="style.css" rel="stylesheet" media="all"> Bloque le rendu
3- <link href="portrait.css" rel="stylesheet" media="orientation:portrait"> Ne bloque pas
4- <link href="print.css" rel="stylesheet" media="print"> Ne bloque pas le rendu
30#seocamp@LoukilAymen
Prioriser le CSS critique
1. Installer CasperJS : http://casperjs.org/ (Node.js)
2. Télécharger ce script :
https://github.com/ibrennan/automation/tree/master/content/critical-css
3. >casperjs app.js pour l’exécuter
4. Répondre aux questions
5. Copier le code CSS sorti et le coller en inline avant l’inclusion des fichiers de style
31#seocamp@LoukilAymen
Mettre en place AMP
= Rapide ?
32#seocamp@LoukilAymen
Page web
33#seocamp@LoukilAymen
Avec AMP
34#seocamp@LoukilAymen
AMP n’est rapide qu’à partir de la SERP
35#seocamp@LoukilAymen
Pardon ?
36#seocamp@LoukilAymen
Utilisez les “Resource Hints”
https://w3c.github.io/resource-hints/
37#seocamp@LoukilAymen
rel=”prefetch”
38#seocamp@LoukilAymen
Quelle serait la next page ?
https://github.com/SamKnows/futurelink
39#seocamp@LoukilAymen
DNS ASAP
40#seocamp@LoukilAymen
Passez en HTTP/2
HTTP/1.1 HTTP/2
Open
Close
Open
Close
T T
Benefits :
● Multiplexing
● Header compression
● Better prioritization
● Server push
41#seocamp@LoukilAymen
Compression d’images
Caesium :
https://saerasoft.com/caesium/
- Choisir le pourcentage de
compression
- Version Desktop
- Version CLI
25% d’une image est inutile (HTTPArchive)
42#seocamp@LoukilAymen
Métriques : FP, FCP, FMP, TTI
https://developers.google.com/
ça arrive ?
c’est utile ?
c’est utilisable ?
43#seocamp@LoukilAymen
La console Chrome : your friend
44#seocamp@LoukilAymen
Lighthouse - Outil de diagnostic
Score performance > 90 - 5% des top
45#seocamp@LoukilAymen
Automatiser vos rapports
https://github.com/GoogleChrome/lighthouse
$ npm install -g lighthouse
$ lighthouse --perf https://paris.seo-campus.org
$ lighthouse --output-path=./report.json --output json
46#seocamp@LoukilAymen
Rendering & Crawl
47#seocamp@LoukilAymen
Et le rendu ?
Comment Google voit-il mon site ?
- Fetch as Google (Search Console)
- Google Cache
- Se mettre dans la peau de Google ?
48#seocamp@LoukilAymen
Googlebot M41
49#seocamp@LoukilAymen
Polyfill et Feature detection
50#seocamp@LoukilAymen
Puppeteer : Chrome-Sans-tête
https://github.com/GoogleChromeLabs/puppeteer-examples
51#seocamp@LoukilAymen
Détecter des features non supportées par G
https://caniuse.com
52#seocamp@LoukilAymen
Headless Chrome Crawler
https://github.com/yujiosaka/headless-chrome-crawler
53#seocamp@LoukilAymen
Et le JavaScript ?
- Contenu visible ?
- Erreurs JS
54#seocamp@LoukilAymen
Détecter des erreurs JS + remote report
55#seocamp@LoukilAymen
Groupe pour JS SEO
https://groups.google.com/forum/#!forum/js-sites-
wg
Groupe Google autour du SEO JS
56#seocamp@LoukilAymen
Dette technique SEO
57#seocamp@LoukilAymen
Harder crawling, complexity
@dawnieando
58#seocamp@LoukilAymen
Consistance SEO
59#seocamp@LoukilAymen
Signaux en conflit
Canonical = A
Hreflang = B
Sitemap = B
B=>C
301
dev.site.com
www.site.com
Robots.txt disallow
Meta : index,
follow
60#seocamp@LoukilAymen
Ce contenu mérite il une URL ?
Posez vous la question avant de créer une nouvelle URL sur votre site :
- Les tags ?
- Les variants de produits ?
- Un testimonial ? (3 lignes)
- Storelocator listing / items..
61#seocamp@LoukilAymen
Qualité >>> Quantité
#noindex
#cleaning
#lessismore
#410Gone
#Disallow
#Prune
62#seocamp@LoukilAymen
Et le budget de crawl ?
63#seocamp@LoukilAymen
Analysez vos logs
● Les pages crawlées / non crawlées
● L’évolution de l’activité de Googlebot
● Les TOP pages crawlées (souvent des surprises)
● Les pages avec erreurs
● Les pages instables (parfois HTTP 200 parfois en erreur)
● Des pages non intéressantes et souvent crawlées (perte du budget)
● Des ressources gourmandes (css, js, Zip) et pas nécessaires au rendu ?
● Les pages lentes ?
● Les bots qui ne sont pas bienvenues (spam, scrap)
● MFI ?
Croiser avec Analytics et d’autres données
64#seocamp@LoukilAymen
Économiser un peu de budget
Pages indexées mais pas les plus importantes
Ressources ..
If-Modified-Since
65#seocamp@LoukilAymen
MFI : L’ordre du contenu
66#seocamp@LoukilAymen
Securité
67#seocamp@LoukilAymen
HTTPS
68#seocamp@LoukilAymen
Chasse au HTTP
69#seocamp@LoukilAymen
Contenus mixtes
Tab : Security
Tab : Console JS
70#seocamp@LoukilAymen
On va checker à la main toutes les pages !
71#seocamp@LoukilAymen
Reporting des erreurs HTTPS
Content-Security-Policy-Report-Only: default-src https: 'unsafe-inline'
'unsafe-eval'; report-uri https://votrEndpointDeReporting.com/report*
Ajouter ce header dans vos réponses serveur :
JSON
72#seocamp@LoukilAymen
HTTPS Headers
https://www.cspisawesome.com/
73#seocamp@LoukilAymen
Utilisez les headers
● Strict-Transport-Security (HSTS) : Browser => Toujours en HTTPS (MiTM attack)
● Content-Security-Policy (CSP)2016 : Quels type de contenus sont autorisés (XSS, vol de données,
malware..etc)
-> Content-Security-Policy: default-src ‘self’; img-src site1.com site2.com; scripts-src googleapis.com
jquery.com
● X-Frame-Options : Ne pas autoriser l’iframing du site (clickjacking)
● X-Content-Type-Options : Détecter un mismatch de type de contenu (malware)
https://discuss.httparchive.org/t/adoption-of-http-security-headers-on-the-web/1259
74#seocamp@LoukilAymen
Schema.org
75#seocamp@LoukilAymen
Être Machine-readable, c’est l’opportunité
« Schema.org rend ton site plus machine-readable:
Compréhensible par Google, Il devine facilement ce que tu y raconte.
Il peut donc proposer des résultats mieux formatés et plus adéquats
avec le contexte de la recherche. »
76#seocamp@LoukilAymen
Entity first indexation
“First part of query analysis is looking for
entities” 2016 #SMX
77#seocamp@LoukilAymen
Schema.org n’est pas une mode
78#seocamp@LoukilAymen
Google Images / Product
79#seocamp@LoukilAymen
ItemList
80#seocamp@LoukilAymen
Schema/NewsArticle
Schema/NewsArticle
Schema/Organization
81#seocamp@LoukilAymen
Maîtrise des informations produits
Schema/Product
Schema/Car
Schema/AggregateRating
82#seocamp@LoukilAymen
Schema/Recipe
83#seocamp@LoukilAymen
Schema/VideoObject
Schema/BreadcrumbList
Schema/Product
Schema/AggregateRating
84#seocamp@LoukilAymen
Schema/Course
85#seocamp@LoukilAymen
JobPosting
Schema/JobPosting
86#seocamp@LoukilAymen
LiveBlogPosting
https://plus.google.com/u/0/+GoogleDevelopers/posts/UMFfemnynCg
87#seocamp@LoukilAymen
Schema.org/ClaimReview
Schema/ClaimReview
88#seocamp@LoukilAymen
Schema.org/Question / acceptedAnswer
89#seocamp@LoukilAymen
Dernière version 3.3
HowTo
NewsArticle
TouristType, TouristAttraction
90#seocamp@LoukilAymen
Yandex et Schema
91#seocamp@LoukilAymen
Apple et Schema
Schema:Name
Schema:Price
Schema:AggregateRating
Schema:Description
Schema:reviewCount
92#seocamp@LoukilAymen
Bing supporte enfin le JSON-LD !
93#seocamp@LoukilAymen
Process d’implémentation Schema.org
Types
definition
Playground
& test
Check &
validate
Implementation Monitoring
94#seocamp@LoukilAymen
Définition des types
Home
Editorials E-commerce Store Locator AgendaAuthors Careers
95#seocamp@LoukilAymen
Définition des types
Home
Editorials E-commerce Store Locator AgendaAuthors
Article
NewsArticle
Blogposting
QAPage
Person
Organization
Product
Offer
AggregrateRating
ItemList
CheckoutPage
LocalBusiness
Organization
Address
Event
BusinessEvent
SaleEvent
MusicEvent
….
Careers
JobPosting
Website
Organization
SearchAction
96#seocamp@LoukilAymen
Implémentation custom
{
"@context":"http://schema.org",
"@type": "Product",
"description": "...",
"name": « iPhone 8”,
"image":« iphone-8.jpg,
"offers": {
"@type": "Offer",
"price": « 850.00",
"priceCurrency": "EUR"
}
Framework PHP open source
API Rest
Data Model Schema.org
ORM
On peut personnaliser / créer des
types
Basé sur Symfony
https://api-platform.com/
97#seocamp@LoukilAymen
Modèle de données sur Schema.org
Se baser sur Schema.org pour générer votre modèle de données métier
98#seocamp@LoukilAymen
Tester la #Dev
Localhost
99#seocamp@LoukilAymen
Schema.org pour E-commerce
Product
• Name
• Brand
• Price
• Availability
• ItemCondition
• Color
• gtinX
• Logo
• Material
• Offers
• SKU
• AdditionalType
• IsRelatedTo
• IsSimilarTo
• isAccessoryOrSparePartFor
10
0#seocamp@LoukilAymen
additionalType et ProductOntology
http://www.productontology.org/
● Permet de donner plus de précision sur l’objet (produit ou
autre)
● Se baser sur les classes Wikipédia
http://en.wikipedia.org/wiki/Hammer
http://www.productontology.org/id/Hammer
10
1#seocamp@LoukilAymen
AdditionalType
<script type="application/ld+json">
{
"@context": "http://schema.org/",
"@type": "Product",
"additionalType": "http://www.productontology.org/id/Racing_bicycle",
"name": "Moto R1",
"offers":{
"@type": "Offer",
"availability": "http://schema.org/InStock",
"serialNumber": "CONC91000937",
…
}
}
</script>
10
2#seocamp@LoukilAymen
GS1 + Schema
10
3#seocamp@LoukilAymen
Agilisez le SEO
Transformer l’organisation
- Casser les SILOS
- Cross-discipline
- Spirit de performance
- Communication
- KPIs
- Test & learn
10
4#seocamp@LoukilAymen
Des mois d’attente..
10
5#seocamp@LoukilAymen
Pour éviter ça..
10
6#seocamp@LoukilAymen
Make User Experience great again
“Let’s stop chasing the content train and get back to
making experiences that perform.”
Michael King(ipullrank)
10
7#seocamp@LoukilAymen
Question Mug
“Quelle est la ressource hint la plus adaptée
pour charger plus rapidement la prochaine page
que l’utilisateur va visiter? ”
10
8#seocamp@LoukilAymen
Merci !
Continuons la discussion : @LoukilAymen
#TechnicalSEO2018
10
9
#seocamp
MERCI AUX SPONSORS
1 of 109

More Related Content

Similar to Technical seo tips and tricks actionnables 2018(20)

Le prix de la pubLe prix de la pub
Le prix de la pub
Web Performance Paris 473 views
Seocampus 2018-laura-blanchardSeocampus 2018-laura-blanchard
Seocampus 2018-laura-blanchard
Laura Blanchard - Agence KHOSI2.1K views

Technical seo tips and tricks actionnables 2018