SlideShare a Scribd company logo
Debugging rendering
problems at scale
Giacomo Zecchini | Verve Search
SLIDESHARE.NET/GIACOMOZECCHINI
@GIACOMOZECCHINI
Hi, I’m Giacomo. Technical
Director at Verve Search.
Technical background and
previous experiences in
development.
@giacomozecchini
#brightonSEO
Today we are going to talk about
rendering errors, the challenges
of debugging at scale and a new
approach to solve these issues.
@giacomozecchini
#brightonSEO
The search engine's rendering
process is very similar to
Schrödinger's cat paradox.
https://en.wikipedia.org/wiki/Schrödinger's_cat
@giacomozecchini
#brightonSEO
A hypothetical cat page may be
considered simultaneously both
alive correctly rendered and
dead not correctly rendered.
@giacomozecchini
#brightonSEO
Let me explain..
@giacomozecchini
#brightonSEO
Search engines get web pages
and put them in web rendering
services.
https://developers.google.com/search/docs/guides/javascript-seo-basics
@giacomozecchini
#brightonSEO
Inside the web rendering
services, the pages are rendered
similarly to a browser.
https://developers.google.com/search/docs/guides/javascript-seo-basics
@giacomozecchini
#brightonSEO
Then, the search engines can
extract all information they
need from those rendered
pages.
https://developers.google.com/search/docs/guides/javascript-seo-basics
@giacomozecchini
#brightonSEO
This is an oversimplification of a
complex process.
https://www.youtube.com/watch?v=Qxd_d9m9vzo
@giacomozecchini
#brightonSEO
If you want to know more about
this I’d suggest to watch Martin
Splitt’s TechSEO Boost 2019
talk.
https://www.youtube.com/watch?v=Qxd_d9m9vzo
@giacomozecchini
#brightonSEO
What’s the problem
with Web Rendering
Services?
@giacomozecchini
#brightonSEO
What happens inside the web
rendering services is something
hidden from our eyes, like in a
closed box.
@giacomozecchini
#brightonSEO
You don’t know if a page has
been correctly rendered until you
check it manually.
@giacomozecchini
#brightonSEO
Search engines are capable of
rendering your pages and most
of the time the process will be
fine.
@giacomozecchini
#brightonSEO
Nonetheless, some pages have
rendering problems.
@giacomozecchini
#brightonSEO
When is a page not
correctly rendered?
@giacomozecchini
#brightonSEO
A page is “not correctly
rendered” when is not possible
for the WRS to get an asset or
when an error blocks the
process.
@giacomozecchini
#brightonSEO
Not only pages with Javascript
have problems!
@giacomozecchini
#brightonSEO
Let's have a look at a few
examples...
@giacomozecchini
#brightonSEO
HTTP / DNS / Network errors
@giacomozecchini
#brightonSEO
https://developers.google.com/search/docs/advanced/crawling/http-network-errors
Crawler
WRS
Cache
SEARCH ENGINE
* Icons made by Freepik from www.flaticon.com
Robots.txt blocks a resources
@giacomozecchini
#brightonSEO
https://developers.google.com/search/docs/advanced/robots/intro
Crawler
WRS
Cache
SEARCH ENGINE
* Icons made by Freepik from www.flaticon.com
Fetch timeout
@giacomozecchini
#brightonSEO
Crawler
WRS
Cache
SEARCH ENGINE
* this doesn’t seem very common,
but it can happen
* Icons made by Freepik from www.flaticon.com
https/http mixed content
@giacomozecchini
#brightonSEO
If your website has an HTTPS
URL but one of the Javascript
files has an HTTP URL and the
HTTPS version is not available,
the script won't be used!
Cache mismatch, user
permission for specific
features (e.g. geolocation),
service worker registration,
Javascript syntax errors, etc.
@giacomozecchini
#brightonSEO
What if a page is not
correctly rendered?
@giacomozecchini
#brightonSEO
If WRS can’t get your CSS the
page layout won’t be correct and
you may also have Mobile
Usability issues.
@giacomozecchini
#brightonSEO
If WRS can’t get or execute your
JS files correctly, your page may
be blank or broken.
@giacomozecchini
#brightonSEO
Eventually, WRS may need to
render again your page, which
means slower indexing.
@giacomozecchini
#brightonSEO
Debugging at scale
@giacomozecchini
#brightonSEO
Manually checking page per
page might work on very small
websites.
@giacomozecchini
#brightonSEO
When you start having a lot of
pages.. That’s a problem!
@giacomozecchini
#brightonSEO
You can prioritise and group
pages with similar HTML and
resources together, but..
@giacomozecchini
#brightonSEO
..the rendering of a page can fail
regardless of what happens to
other similar pages.
@giacomozecchini
#brightonSEO
You still have to manually check
pages to be 100% sure those are
correctly rendered.
@giacomozecchini
#brightonSEO
WRS capabilities
vs Debugging
@giacomozecchini
#brightonSEO
Understanding what a Web
Rendering Service can or can’t
do is a one time task.
@giacomozecchini
#brightonSEO
You can build a page with a
specific feature and test it. If it
works once it will work again on
other pages.
@giacomozecchini
#brightonSEO
When debugging issues you are
not focusing on a single feature
but on having an overall correct
rendering.
@giacomozecchini
#brightonSEO
View crawled page is the way.
@giacomozecchini
#brightonSEO
A lot of information.
@giacomozecchini
#brightonSEO
But that’s not enough, you want
more. For instance, Javascript
console messages are
coalesced and not shown.
@giacomozecchini
#brightonSEO
Yes, you can get JavaScript
console errors from the Mobile
Friendly test or other live tests
but it’s not the same!
@giacomozecchini
#brightonSEO
Mobile-Friendly Test and the
other live tests bypass the
cache, have shorter timeouts,
and few other differences.
@giacomozecchini
#brightonSEO
A new hope
approach
@giacomozecchini
#brightonSEO
I started my research by getting
and printing the information I
needed on the page with some
Javascript, in a hidden <DIV>.
@giacomozecchini
#brightonSEO
<html>
…
<div id="info" style="display:none"></div>
…
<script>
…
function getInformation(){
// do stuff!
}
…
var div = document.getElementById("info");
var p = document.createElement("p");
p.innerText = getInformation();
div.appendChild(p);
…
</script>
…
</html>
@giacomozecchini
#brightonSEO
This prints the
information you need
in the DIV at
rendering time and
then you can get
them in Search
Console view crawled
page HTML.
But waiting for a page to be
crawled, rendered and indexed
again is time consuming and not
scalable.
@giacomozecchini
#brightonSEO
It’s a nice way of discovering
new things but you still have to
manually check all pages.
@giacomozecchini
#brightonSEO
Then, I thought of using 1x1 px
images, appending errors or
information in the URL:
https://www.example.com/image.jpg
?u=page_url&e=error
@giacomozecchini
#brightonSEO
The idea was to look in the
server access log and find all
errors that occurred during the
rendering.
@giacomozecchini
#brightonSEO
But Google’s WRS doesn’t
download images during the
rendering of a page.
@giacomozecchini
#brightonSEO
But then..
@giacomozecchini
#brightonSEO
The answer was always in
front of my eyes:
Javascript + POST requests!
@giacomozecchini
#brightonSEO
Google’s WRS cache GET
requests.
@giacomozecchini
#brightonSEO
https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/GET
But doesn’t cache POST
requests.
@giacomozecchini
#brightonSEO
https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/POST
Say welcome to the shiny new
Search Engine Rendering
Errors Logging framework!
@giacomozecchini
#brightonSEO
@giacomozecchini
#brightonSEO
Crawler
WRS
Cache
SEARCH ENGINE YOUR WEBSITE
Search Engines download or use the cache of
the resources they need to render your pages.
* Icons made by Freepik from www.flaticon.com
@giacomozecchini
#brightonSEO
CHROMIUM INSTANCE
SEARCH ENGINE
Crawler
INTERNET
During the rendering the website, WRS executes
Javascript and downloads additional resources
a website might need or request.
* Icons made by Freepik from www.flaticon.com
@giacomozecchini
#brightonSEO
CHROMIUM INSTANCE
* Icons made by Freepik from www.flaticon.com
SEARCH ENGINE
Crawler
SERVER
What if one of those Javascript sends a non
cacheable POST request to an external server?!
POST
REQUEST
@giacomozecchini
#brightonSEO
There are multiple ways of
sending POST requests in JS:
Fetch API
https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch
Navigator.sendBeacon()
https://developer.mozilla.org/en-US/docs/Web/API/Navigator/sendBeacon
XMLHttpRequest.send()
https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/send
{
"page":"https://www.example.com",
"timestamp": 1592568000000,
"category": "Fetch",
"error": "https://www.example.com/style.css"
}
@giacomozecchini
#brightonSEO
The message (or beacon) contains the information you want to store
in your database.
@giacomozecchini
#brightonSEO
TIME URL CATEGORY ERROR
25/10/1985 09:00:00 https://www.example.com Fetch https://www.example.com/style.css
21/10/2015 07:28:00 https://www.example.com/about.html Fetch https://www.example.com/app.js
12/11/1955 06:38:00 https://www.example.com Javascript File: https://www.example.com/app.js Line: 3 Col: 2
Error: Uncaught ReferenceError: APP is not defined
When you have everything in a database you can query the tables
and do all your analysis. You can also have automatic alerts, etc.
Debugging in
practice
@giacomozecchini
#brightonSEO
!! Warning !!
Don’t use this code on your
website, these are just (bad)
examples.
@giacomozecchini
#brightonSEO
Debugging example #1
Check if a page has been
rendered
@giacomozecchini
#brightonSEO
<html>
…
<script>
sendMessageToServer();
</script>
…
</html>
@giacomozecchini
#brightonSEO
When the WRS executes the script, the
function sends a message back to the
server.
Debugging example #2
Know if there is a problem
downloading CSS or JS files
@giacomozecchini
#brightonSEO
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<script>
…
window.addEventListener('error', function(err) {
if (isDownloadError(err)){
sendMessageToServer(err);
}
}, true);
…
</script>
…
</head>
…
</html>
@giacomozecchini
#brightonSEO
If there is an error and it's a CSS or
JS load error you can send a
message back to the server. This
works for HTTP/DNS/Network errors,
Robots.txt, fetch timeouts, etc.
Caveats
@giacomozecchini
#brightonSEO
There are some products out
there but all of them focus on
users and not on search
engines.
@giacomozecchini
#brightonSEO
Search engines are different
and you need to solve
different problems.
@giacomozecchini
#brightonSEO
You should be careful adding
new code to your website!
@giacomozecchini
#brightonSEO
Web Performance issues
You don’t want to slow down
the user experience with
something you need only for
search engines.
@giacomozecchini
#brightonSEO
Web Performance issues
Check for the User-Agent and
run the script only for search
engines.
@giacomozecchini
#brightonSEO
Crawl budget
You don’t want to consume
your crawl budget on these
requests.
@giacomozecchini
#brightonSEO
Crawl budget
Host your debugging server on
a different domain or
subdomain.
@giacomozecchini
#brightonSEO
There are many other possible
problems, you just need to find
a solution for them.
@giacomozecchini
#brightonSEO
Conclusions
@giacomozecchini
#brightonSEO
The simpler a page is, the
more chances it will render
correctly. The majority of
pages are just fine.
@giacomozecchini
#brightonSEO
If you work on big or complex
websites you may encounter
rendering problems.
@giacomozecchini
#brightonSEO
Debugging rendering
problems is a very time
consuming task..
@giacomozecchini
#brightonSEO
..but, if you use the right
approach you can cut down
the time it takes.
@giacomozecchini
#brightonSEO
You can use this approach as
a one time debugging script to
get more information or as a
monitoring system.
@giacomozecchini
#brightonSEO
Thank You!
Got questions? DM me on Twitter.
@giacomozecchini

More Related Content

What's hot

Agile SEO: Prioritise SEO Activities with Cadence and Risk Radius
Agile SEO: Prioritise SEO Activities with Cadence and Risk RadiusAgile SEO: Prioritise SEO Activities with Cadence and Risk Radius
Agile SEO: Prioritise SEO Activities with Cadence and Risk Radius
Parth Suba
 
Brighton SEO April 2022 - Automate the technical SEO stuff
Brighton SEO April 2022 - Automate the technical SEO stuffBrighton SEO April 2022 - Automate the technical SEO stuff
Brighton SEO April 2022 - Automate the technical SEO stuff
Michael Van Den Reym
 
Cost Effective Multilingual Content Optimization in An International SEO Process
Cost Effective Multilingual Content Optimization in An International SEO ProcessCost Effective Multilingual Content Optimization in An International SEO Process
Cost Effective Multilingual Content Optimization in An International SEO Process
Aleyda Solís
 
Brighton SEO 2022: On-page optimization lessons from analyzing over 400 blog ...
Brighton SEO 2022: On-page optimization lessons from analyzing over 400 blog ...Brighton SEO 2022: On-page optimization lessons from analyzing over 400 blog ...
Brighton SEO 2022: On-page optimization lessons from analyzing over 400 blog ...
chima mmeje
 
brightonSEO April 2023 - Sarah Presch - The Psychology Behind Inclusive iSEO ...
brightonSEO April 2023 - Sarah Presch - The Psychology Behind Inclusive iSEO ...brightonSEO April 2023 - Sarah Presch - The Psychology Behind Inclusive iSEO ...
brightonSEO April 2023 - Sarah Presch - The Psychology Behind Inclusive iSEO ...
Sarah Presch
 
Hreflang tags: everything you need to know to start implementing them
Hreflang tags: everything you need to know to start implementing themHreflang tags: everything you need to know to start implementing them
Hreflang tags: everything you need to know to start implementing them
Sara Moccand-Sayegh
 
Improving Crawling and Indexing using Real-Time Log File Insights
Improving Crawling and Indexing using Real-Time Log File InsightsImproving Crawling and Indexing using Real-Time Log File Insights
Improving Crawling and Indexing using Real-Time Log File Insights
Steven van Vessum
 
The Quickest Win in SEO – How to do Internal Linking the Right Way
The Quickest Win in SEO – How to do Internal Linking the Right WayThe Quickest Win in SEO – How to do Internal Linking the Right Way
The Quickest Win in SEO – How to do Internal Linking the Right Way
Martin Hayman
 
Can you trust AI with your content?
Can you trust AI with your content?Can you trust AI with your content?
Can you trust AI with your content?
Mat Bennett
 
Web Server SEO: Make your TTFB faster!
Web Server SEO: Make your TTFB faster!Web Server SEO: Make your TTFB faster!
Web Server SEO: Make your TTFB faster!
Ash New
 
How To EAT Links.pptx
How To EAT Links.pptxHow To EAT Links.pptx
How To EAT Links.pptx
Dixon Jones
 
How to Implement Machine Learning in Your Internal Linking Audit - Lazarina S...
How to Implement Machine Learning in Your Internal Linking Audit - Lazarina S...How to Implement Machine Learning in Your Internal Linking Audit - Lazarina S...
How to Implement Machine Learning in Your Internal Linking Audit - Lazarina S...
LazarinaStoyanova
 
Martin McGarry - SEO strategy c/o England manager Gareth Southgate
Martin McGarry - SEO strategy c/o England manager Gareth SouthgateMartin McGarry - SEO strategy c/o England manager Gareth Southgate
Martin McGarry - SEO strategy c/o England manager Gareth Southgate
Martin McGarry
 
BrightonSEO Slides April 2023
BrightonSEO Slides April 2023BrightonSEO Slides April 2023
BrightonSEO Slides April 2023
Cheryl Luzet
 
BrightonSEO April 2023 Similar AI: Automation recipes for SEO success
BrightonSEO April 2023 Similar AI: Automation recipes for SEO successBrightonSEO April 2023 Similar AI: Automation recipes for SEO success
BrightonSEO April 2023 Similar AI: Automation recipes for SEO success
Dylan Fuler
 
Creating An Inclusive Web
Creating An Inclusive WebCreating An Inclusive Web
Creating An Inclusive Web
Miracle Inameti-Archibong
 
How to improve Core Web Vitals on a WordPress website
How to improve Core Web Vitals on a WordPress websiteHow to improve Core Web Vitals on a WordPress website
How to improve Core Web Vitals on a WordPress website
Indigo Tree Digital
 
SEO Automation Without Using Hard Code by Tevfik Mert Azizoglu - BrightonSEO ...
SEO Automation Without Using Hard Code by Tevfik Mert Azizoglu - BrightonSEO ...SEO Automation Without Using Hard Code by Tevfik Mert Azizoglu - BrightonSEO ...
SEO Automation Without Using Hard Code by Tevfik Mert Azizoglu - BrightonSEO ...
Tevfik Mert Azizoglu
 
How to rethink the traditional SEO workspace to promote team wellbeing and pr...
How to rethink the traditional SEO workspace to promote team wellbeing and pr...How to rethink the traditional SEO workspace to promote team wellbeing and pr...
How to rethink the traditional SEO workspace to promote team wellbeing and pr...
Varn
 
How to produce great multilingual content, even when you can't read it | Laur...
How to produce great multilingual content, even when you can't read it | Laur...How to produce great multilingual content, even when you can't read it | Laur...
How to produce great multilingual content, even when you can't read it | Laur...
Oban International
 

What's hot (20)

Agile SEO: Prioritise SEO Activities with Cadence and Risk Radius
Agile SEO: Prioritise SEO Activities with Cadence and Risk RadiusAgile SEO: Prioritise SEO Activities with Cadence and Risk Radius
Agile SEO: Prioritise SEO Activities with Cadence and Risk Radius
 
Brighton SEO April 2022 - Automate the technical SEO stuff
Brighton SEO April 2022 - Automate the technical SEO stuffBrighton SEO April 2022 - Automate the technical SEO stuff
Brighton SEO April 2022 - Automate the technical SEO stuff
 
Cost Effective Multilingual Content Optimization in An International SEO Process
Cost Effective Multilingual Content Optimization in An International SEO ProcessCost Effective Multilingual Content Optimization in An International SEO Process
Cost Effective Multilingual Content Optimization in An International SEO Process
 
Brighton SEO 2022: On-page optimization lessons from analyzing over 400 blog ...
Brighton SEO 2022: On-page optimization lessons from analyzing over 400 blog ...Brighton SEO 2022: On-page optimization lessons from analyzing over 400 blog ...
Brighton SEO 2022: On-page optimization lessons from analyzing over 400 blog ...
 
brightonSEO April 2023 - Sarah Presch - The Psychology Behind Inclusive iSEO ...
brightonSEO April 2023 - Sarah Presch - The Psychology Behind Inclusive iSEO ...brightonSEO April 2023 - Sarah Presch - The Psychology Behind Inclusive iSEO ...
brightonSEO April 2023 - Sarah Presch - The Psychology Behind Inclusive iSEO ...
 
Hreflang tags: everything you need to know to start implementing them
Hreflang tags: everything you need to know to start implementing themHreflang tags: everything you need to know to start implementing them
Hreflang tags: everything you need to know to start implementing them
 
Improving Crawling and Indexing using Real-Time Log File Insights
Improving Crawling and Indexing using Real-Time Log File InsightsImproving Crawling and Indexing using Real-Time Log File Insights
Improving Crawling and Indexing using Real-Time Log File Insights
 
The Quickest Win in SEO – How to do Internal Linking the Right Way
The Quickest Win in SEO – How to do Internal Linking the Right WayThe Quickest Win in SEO – How to do Internal Linking the Right Way
The Quickest Win in SEO – How to do Internal Linking the Right Way
 
Can you trust AI with your content?
Can you trust AI with your content?Can you trust AI with your content?
Can you trust AI with your content?
 
Web Server SEO: Make your TTFB faster!
Web Server SEO: Make your TTFB faster!Web Server SEO: Make your TTFB faster!
Web Server SEO: Make your TTFB faster!
 
How To EAT Links.pptx
How To EAT Links.pptxHow To EAT Links.pptx
How To EAT Links.pptx
 
How to Implement Machine Learning in Your Internal Linking Audit - Lazarina S...
How to Implement Machine Learning in Your Internal Linking Audit - Lazarina S...How to Implement Machine Learning in Your Internal Linking Audit - Lazarina S...
How to Implement Machine Learning in Your Internal Linking Audit - Lazarina S...
 
Martin McGarry - SEO strategy c/o England manager Gareth Southgate
Martin McGarry - SEO strategy c/o England manager Gareth SouthgateMartin McGarry - SEO strategy c/o England manager Gareth Southgate
Martin McGarry - SEO strategy c/o England manager Gareth Southgate
 
BrightonSEO Slides April 2023
BrightonSEO Slides April 2023BrightonSEO Slides April 2023
BrightonSEO Slides April 2023
 
BrightonSEO April 2023 Similar AI: Automation recipes for SEO success
BrightonSEO April 2023 Similar AI: Automation recipes for SEO successBrightonSEO April 2023 Similar AI: Automation recipes for SEO success
BrightonSEO April 2023 Similar AI: Automation recipes for SEO success
 
Creating An Inclusive Web
Creating An Inclusive WebCreating An Inclusive Web
Creating An Inclusive Web
 
How to improve Core Web Vitals on a WordPress website
How to improve Core Web Vitals on a WordPress websiteHow to improve Core Web Vitals on a WordPress website
How to improve Core Web Vitals on a WordPress website
 
SEO Automation Without Using Hard Code by Tevfik Mert Azizoglu - BrightonSEO ...
SEO Automation Without Using Hard Code by Tevfik Mert Azizoglu - BrightonSEO ...SEO Automation Without Using Hard Code by Tevfik Mert Azizoglu - BrightonSEO ...
SEO Automation Without Using Hard Code by Tevfik Mert Azizoglu - BrightonSEO ...
 
How to rethink the traditional SEO workspace to promote team wellbeing and pr...
How to rethink the traditional SEO workspace to promote team wellbeing and pr...How to rethink the traditional SEO workspace to promote team wellbeing and pr...
How to rethink the traditional SEO workspace to promote team wellbeing and pr...
 
How to produce great multilingual content, even when you can't read it | Laur...
How to produce great multilingual content, even when you can't read it | Laur...How to produce great multilingual content, even when you can't read it | Laur...
How to produce great multilingual content, even when you can't read it | Laur...
 

Similar to Debugging rendering problems at scale

Validating Session Isolation for Web Crawling to Provide Data Integrity
Validating Session Isolation for Web Crawling to Provide Data IntegrityValidating Session Isolation for Web Crawling to Provide Data Integrity
Validating Session Isolation for Web Crawling to Provide Data Integrity
Giacomo Zecchini
 
SMX Advanced 2018 SEO for Javascript Frameworks by Patrick Stox
SMX Advanced 2018 SEO for Javascript Frameworks by Patrick StoxSMX Advanced 2018 SEO for Javascript Frameworks by Patrick Stox
SMX Advanced 2018 SEO for Javascript Frameworks by Patrick Stox
patrickstox
 
Stefan Judis "Did we(b development) lose the right direction?"
Stefan Judis "Did we(b development) lose the right direction?"Stefan Judis "Did we(b development) lose the right direction?"
Stefan Judis "Did we(b development) lose the right direction?"
Fwdays
 
Deep crawl the chaotic landscape of JavaScript
Deep crawl the chaotic landscape of JavaScript Deep crawl the chaotic landscape of JavaScript
Deep crawl the chaotic landscape of JavaScript
Onely
 
SMX_DevTools_Monaco_2.pdf
SMX_DevTools_Monaco_2.pdfSMX_DevTools_Monaco_2.pdf
SMX_DevTools_Monaco_2.pdf
Sara Moccand-Sayegh
 
SearchLove London 2017 | Emily Grossman | From Website to Web-App: Fantastic ...
SearchLove London 2017 | Emily Grossman | From Website to Web-App: Fantastic ...SearchLove London 2017 | Emily Grossman | From Website to Web-App: Fantastic ...
SearchLove London 2017 | Emily Grossman | From Website to Web-App: Fantastic ...
Distilled
 
How Googlebot Renders (Roleplaying as Google's Web Rendering Service-- D&D st...
How Googlebot Renders (Roleplaying as Google's Web Rendering Service-- D&D st...How Googlebot Renders (Roleplaying as Google's Web Rendering Service-- D&D st...
How Googlebot Renders (Roleplaying as Google's Web Rendering Service-- D&D st...
Jamie Indigo
 
Javascript SEO Devs and SEOs playing nicely
Javascript SEO Devs and SEOs playing nicelyJavascript SEO Devs and SEOs playing nicely
Javascript SEO Devs and SEOs playing nicely
Peter Mead
 
Leveling up your JavaScipt - DrupalJam 2017
Leveling up your JavaScipt - DrupalJam 2017Leveling up your JavaScipt - DrupalJam 2017
Leveling up your JavaScipt - DrupalJam 2017
Christian Heilmann
 
Troubleshooting SEO for JS Frameworks - Patrick Stox - DTD 2018
Troubleshooting SEO for JS Frameworks - Patrick Stox - DTD 2018Troubleshooting SEO for JS Frameworks - Patrick Stox - DTD 2018
Troubleshooting SEO for JS Frameworks - Patrick Stox - DTD 2018
patrickstox
 
Web Performance & Search Engines - A look beyond rankings
Web Performance & Search Engines - A look beyond rankingsWeb Performance & Search Engines - A look beyond rankings
Web Performance & Search Engines - A look beyond rankings
Giacomo Zecchini
 
Prototyping user interactions in web apps
Prototyping user interactions in web appsPrototyping user interactions in web apps
Prototyping user interactions in web apps
Patrick NDJIENTCHEU
 
Mobile First Responsive Design
Mobile First Responsive DesignMobile First Responsive Design
Mobile First Responsive Design
Jason Grigsby
 
rendre AJAX crawlable par les moteurs
rendre AJAX crawlable par les moteursrendre AJAX crawlable par les moteurs
rendre AJAX crawlable par les moteursSerge Esteves
 
Challenges of building a search engine like web rendering service
Challenges of building a search engine like web rendering serviceChallenges of building a search engine like web rendering service
Challenges of building a search engine like web rendering service
Giacomo Zecchini
 
HTML5 Intro
HTML5 IntroHTML5 Intro
HTML5 Intro
PavingWays Ltd.
 
Modern SEO Players Guide
Modern SEO Players GuideModern SEO Players Guide
Modern SEO Players Guide
Michael King
 
Progressive Enhancement 2.0 (Conference Agnostic)
Progressive Enhancement 2.0 (Conference Agnostic)Progressive Enhancement 2.0 (Conference Agnostic)
Progressive Enhancement 2.0 (Conference Agnostic)
Nicholas Zakas
 
Technical SEO: Crawl Space Management - SEOZone Istanbul 2014
Technical SEO: Crawl Space Management - SEOZone Istanbul 2014Technical SEO: Crawl Space Management - SEOZone Istanbul 2014
Technical SEO: Crawl Space Management - SEOZone Istanbul 2014
Bastian Grimm
 
Progressive Enhancement 2.0 (jQuery Conference SF Bay Area 2011)
Progressive Enhancement 2.0 (jQuery Conference SF Bay Area 2011)Progressive Enhancement 2.0 (jQuery Conference SF Bay Area 2011)
Progressive Enhancement 2.0 (jQuery Conference SF Bay Area 2011)
Nicholas Zakas
 

Similar to Debugging rendering problems at scale (20)

Validating Session Isolation for Web Crawling to Provide Data Integrity
Validating Session Isolation for Web Crawling to Provide Data IntegrityValidating Session Isolation for Web Crawling to Provide Data Integrity
Validating Session Isolation for Web Crawling to Provide Data Integrity
 
SMX Advanced 2018 SEO for Javascript Frameworks by Patrick Stox
SMX Advanced 2018 SEO for Javascript Frameworks by Patrick StoxSMX Advanced 2018 SEO for Javascript Frameworks by Patrick Stox
SMX Advanced 2018 SEO for Javascript Frameworks by Patrick Stox
 
Stefan Judis "Did we(b development) lose the right direction?"
Stefan Judis "Did we(b development) lose the right direction?"Stefan Judis "Did we(b development) lose the right direction?"
Stefan Judis "Did we(b development) lose the right direction?"
 
Deep crawl the chaotic landscape of JavaScript
Deep crawl the chaotic landscape of JavaScript Deep crawl the chaotic landscape of JavaScript
Deep crawl the chaotic landscape of JavaScript
 
SMX_DevTools_Monaco_2.pdf
SMX_DevTools_Monaco_2.pdfSMX_DevTools_Monaco_2.pdf
SMX_DevTools_Monaco_2.pdf
 
SearchLove London 2017 | Emily Grossman | From Website to Web-App: Fantastic ...
SearchLove London 2017 | Emily Grossman | From Website to Web-App: Fantastic ...SearchLove London 2017 | Emily Grossman | From Website to Web-App: Fantastic ...
SearchLove London 2017 | Emily Grossman | From Website to Web-App: Fantastic ...
 
How Googlebot Renders (Roleplaying as Google's Web Rendering Service-- D&D st...
How Googlebot Renders (Roleplaying as Google's Web Rendering Service-- D&D st...How Googlebot Renders (Roleplaying as Google's Web Rendering Service-- D&D st...
How Googlebot Renders (Roleplaying as Google's Web Rendering Service-- D&D st...
 
Javascript SEO Devs and SEOs playing nicely
Javascript SEO Devs and SEOs playing nicelyJavascript SEO Devs and SEOs playing nicely
Javascript SEO Devs and SEOs playing nicely
 
Leveling up your JavaScipt - DrupalJam 2017
Leveling up your JavaScipt - DrupalJam 2017Leveling up your JavaScipt - DrupalJam 2017
Leveling up your JavaScipt - DrupalJam 2017
 
Troubleshooting SEO for JS Frameworks - Patrick Stox - DTD 2018
Troubleshooting SEO for JS Frameworks - Patrick Stox - DTD 2018Troubleshooting SEO for JS Frameworks - Patrick Stox - DTD 2018
Troubleshooting SEO for JS Frameworks - Patrick Stox - DTD 2018
 
Web Performance & Search Engines - A look beyond rankings
Web Performance & Search Engines - A look beyond rankingsWeb Performance & Search Engines - A look beyond rankings
Web Performance & Search Engines - A look beyond rankings
 
Prototyping user interactions in web apps
Prototyping user interactions in web appsPrototyping user interactions in web apps
Prototyping user interactions in web apps
 
Mobile First Responsive Design
Mobile First Responsive DesignMobile First Responsive Design
Mobile First Responsive Design
 
rendre AJAX crawlable par les moteurs
rendre AJAX crawlable par les moteursrendre AJAX crawlable par les moteurs
rendre AJAX crawlable par les moteurs
 
Challenges of building a search engine like web rendering service
Challenges of building a search engine like web rendering serviceChallenges of building a search engine like web rendering service
Challenges of building a search engine like web rendering service
 
HTML5 Intro
HTML5 IntroHTML5 Intro
HTML5 Intro
 
Modern SEO Players Guide
Modern SEO Players GuideModern SEO Players Guide
Modern SEO Players Guide
 
Progressive Enhancement 2.0 (Conference Agnostic)
Progressive Enhancement 2.0 (Conference Agnostic)Progressive Enhancement 2.0 (Conference Agnostic)
Progressive Enhancement 2.0 (Conference Agnostic)
 
Technical SEO: Crawl Space Management - SEOZone Istanbul 2014
Technical SEO: Crawl Space Management - SEOZone Istanbul 2014Technical SEO: Crawl Space Management - SEOZone Istanbul 2014
Technical SEO: Crawl Space Management - SEOZone Istanbul 2014
 
Progressive Enhancement 2.0 (jQuery Conference SF Bay Area 2011)
Progressive Enhancement 2.0 (jQuery Conference SF Bay Area 2011)Progressive Enhancement 2.0 (jQuery Conference SF Bay Area 2011)
Progressive Enhancement 2.0 (jQuery Conference SF Bay Area 2011)
 

Recently uploaded

Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
BookNet Canada
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
Paul Groth
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
Product School
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Thierry Lestable
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
Thijs Feryn
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
91mobiles
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
ControlCase
 
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
Product School
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
Product School
 
Elevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object CalisthenicsElevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object Calisthenics
Dorra BARTAGUIZ
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
Cheryl Hung
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
DianaGray10
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
Frank van Harmelen
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
Laura Byrne
 
Generating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using SmithyGenerating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using Smithy
g2nightmarescribd
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
Elena Simperl
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
Safe Software
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Product School
 

Recently uploaded (20)

Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
 
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
 
Elevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object CalisthenicsElevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object Calisthenics
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
 
Generating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using SmithyGenerating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using Smithy
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
 

Debugging rendering problems at scale

  • 1. Debugging rendering problems at scale Giacomo Zecchini | Verve Search SLIDESHARE.NET/GIACOMOZECCHINI @GIACOMOZECCHINI
  • 2. Hi, I’m Giacomo. Technical Director at Verve Search. Technical background and previous experiences in development. @giacomozecchini #brightonSEO
  • 3. Today we are going to talk about rendering errors, the challenges of debugging at scale and a new approach to solve these issues. @giacomozecchini #brightonSEO
  • 4. The search engine's rendering process is very similar to Schrödinger's cat paradox. https://en.wikipedia.org/wiki/Schrödinger's_cat @giacomozecchini #brightonSEO
  • 5. A hypothetical cat page may be considered simultaneously both alive correctly rendered and dead not correctly rendered. @giacomozecchini #brightonSEO
  • 7. Search engines get web pages and put them in web rendering services. https://developers.google.com/search/docs/guides/javascript-seo-basics @giacomozecchini #brightonSEO
  • 8. Inside the web rendering services, the pages are rendered similarly to a browser. https://developers.google.com/search/docs/guides/javascript-seo-basics @giacomozecchini #brightonSEO
  • 9. Then, the search engines can extract all information they need from those rendered pages. https://developers.google.com/search/docs/guides/javascript-seo-basics @giacomozecchini #brightonSEO
  • 10. This is an oversimplification of a complex process. https://www.youtube.com/watch?v=Qxd_d9m9vzo @giacomozecchini #brightonSEO
  • 11. If you want to know more about this I’d suggest to watch Martin Splitt’s TechSEO Boost 2019 talk. https://www.youtube.com/watch?v=Qxd_d9m9vzo @giacomozecchini #brightonSEO
  • 12. What’s the problem with Web Rendering Services? @giacomozecchini #brightonSEO
  • 13. What happens inside the web rendering services is something hidden from our eyes, like in a closed box. @giacomozecchini #brightonSEO
  • 14. You don’t know if a page has been correctly rendered until you check it manually. @giacomozecchini #brightonSEO
  • 15. Search engines are capable of rendering your pages and most of the time the process will be fine. @giacomozecchini #brightonSEO
  • 16. Nonetheless, some pages have rendering problems. @giacomozecchini #brightonSEO
  • 17. When is a page not correctly rendered? @giacomozecchini #brightonSEO
  • 18. A page is “not correctly rendered” when is not possible for the WRS to get an asset or when an error blocks the process. @giacomozecchini #brightonSEO
  • 19. Not only pages with Javascript have problems! @giacomozecchini #brightonSEO
  • 20. Let's have a look at a few examples... @giacomozecchini #brightonSEO
  • 21. HTTP / DNS / Network errors @giacomozecchini #brightonSEO https://developers.google.com/search/docs/advanced/crawling/http-network-errors Crawler WRS Cache SEARCH ENGINE * Icons made by Freepik from www.flaticon.com
  • 22. Robots.txt blocks a resources @giacomozecchini #brightonSEO https://developers.google.com/search/docs/advanced/robots/intro Crawler WRS Cache SEARCH ENGINE * Icons made by Freepik from www.flaticon.com
  • 23. Fetch timeout @giacomozecchini #brightonSEO Crawler WRS Cache SEARCH ENGINE * this doesn’t seem very common, but it can happen * Icons made by Freepik from www.flaticon.com
  • 24. https/http mixed content @giacomozecchini #brightonSEO If your website has an HTTPS URL but one of the Javascript files has an HTTP URL and the HTTPS version is not available, the script won't be used!
  • 25. Cache mismatch, user permission for specific features (e.g. geolocation), service worker registration, Javascript syntax errors, etc. @giacomozecchini #brightonSEO
  • 26. What if a page is not correctly rendered? @giacomozecchini #brightonSEO
  • 27. If WRS can’t get your CSS the page layout won’t be correct and you may also have Mobile Usability issues. @giacomozecchini #brightonSEO
  • 28. If WRS can’t get or execute your JS files correctly, your page may be blank or broken. @giacomozecchini #brightonSEO
  • 29. Eventually, WRS may need to render again your page, which means slower indexing. @giacomozecchini #brightonSEO
  • 31. Manually checking page per page might work on very small websites. @giacomozecchini #brightonSEO
  • 32. When you start having a lot of pages.. That’s a problem! @giacomozecchini #brightonSEO
  • 33. You can prioritise and group pages with similar HTML and resources together, but.. @giacomozecchini #brightonSEO
  • 34. ..the rendering of a page can fail regardless of what happens to other similar pages. @giacomozecchini #brightonSEO
  • 35. You still have to manually check pages to be 100% sure those are correctly rendered. @giacomozecchini #brightonSEO
  • 37. Understanding what a Web Rendering Service can or can’t do is a one time task. @giacomozecchini #brightonSEO
  • 38. You can build a page with a specific feature and test it. If it works once it will work again on other pages. @giacomozecchini #brightonSEO
  • 39. When debugging issues you are not focusing on a single feature but on having an overall correct rendering. @giacomozecchini #brightonSEO
  • 40. View crawled page is the way. @giacomozecchini #brightonSEO
  • 41. A lot of information. @giacomozecchini #brightonSEO
  • 42. But that’s not enough, you want more. For instance, Javascript console messages are coalesced and not shown. @giacomozecchini #brightonSEO
  • 43. Yes, you can get JavaScript console errors from the Mobile Friendly test or other live tests but it’s not the same! @giacomozecchini #brightonSEO
  • 44. Mobile-Friendly Test and the other live tests bypass the cache, have shorter timeouts, and few other differences. @giacomozecchini #brightonSEO
  • 46. I started my research by getting and printing the information I needed on the page with some Javascript, in a hidden <DIV>. @giacomozecchini #brightonSEO
  • 47. <html> … <div id="info" style="display:none"></div> … <script> … function getInformation(){ // do stuff! } … var div = document.getElementById("info"); var p = document.createElement("p"); p.innerText = getInformation(); div.appendChild(p); … </script> … </html> @giacomozecchini #brightonSEO This prints the information you need in the DIV at rendering time and then you can get them in Search Console view crawled page HTML.
  • 48. But waiting for a page to be crawled, rendered and indexed again is time consuming and not scalable. @giacomozecchini #brightonSEO
  • 49. It’s a nice way of discovering new things but you still have to manually check all pages. @giacomozecchini #brightonSEO
  • 50. Then, I thought of using 1x1 px images, appending errors or information in the URL: https://www.example.com/image.jpg ?u=page_url&e=error @giacomozecchini #brightonSEO
  • 51. The idea was to look in the server access log and find all errors that occurred during the rendering. @giacomozecchini #brightonSEO
  • 52. But Google’s WRS doesn’t download images during the rendering of a page. @giacomozecchini #brightonSEO
  • 54. The answer was always in front of my eyes: Javascript + POST requests! @giacomozecchini #brightonSEO
  • 55. Google’s WRS cache GET requests. @giacomozecchini #brightonSEO https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/GET
  • 56. But doesn’t cache POST requests. @giacomozecchini #brightonSEO https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/POST
  • 57. Say welcome to the shiny new Search Engine Rendering Errors Logging framework! @giacomozecchini #brightonSEO
  • 58. @giacomozecchini #brightonSEO Crawler WRS Cache SEARCH ENGINE YOUR WEBSITE Search Engines download or use the cache of the resources they need to render your pages. * Icons made by Freepik from www.flaticon.com
  • 59. @giacomozecchini #brightonSEO CHROMIUM INSTANCE SEARCH ENGINE Crawler INTERNET During the rendering the website, WRS executes Javascript and downloads additional resources a website might need or request. * Icons made by Freepik from www.flaticon.com
  • 60. @giacomozecchini #brightonSEO CHROMIUM INSTANCE * Icons made by Freepik from www.flaticon.com SEARCH ENGINE Crawler SERVER What if one of those Javascript sends a non cacheable POST request to an external server?! POST REQUEST
  • 61. @giacomozecchini #brightonSEO There are multiple ways of sending POST requests in JS: Fetch API https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch Navigator.sendBeacon() https://developer.mozilla.org/en-US/docs/Web/API/Navigator/sendBeacon XMLHttpRequest.send() https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/send
  • 62. { "page":"https://www.example.com", "timestamp": 1592568000000, "category": "Fetch", "error": "https://www.example.com/style.css" } @giacomozecchini #brightonSEO The message (or beacon) contains the information you want to store in your database.
  • 63. @giacomozecchini #brightonSEO TIME URL CATEGORY ERROR 25/10/1985 09:00:00 https://www.example.com Fetch https://www.example.com/style.css 21/10/2015 07:28:00 https://www.example.com/about.html Fetch https://www.example.com/app.js 12/11/1955 06:38:00 https://www.example.com Javascript File: https://www.example.com/app.js Line: 3 Col: 2 Error: Uncaught ReferenceError: APP is not defined When you have everything in a database you can query the tables and do all your analysis. You can also have automatic alerts, etc.
  • 65. !! Warning !! Don’t use this code on your website, these are just (bad) examples. @giacomozecchini #brightonSEO
  • 66. Debugging example #1 Check if a page has been rendered @giacomozecchini #brightonSEO
  • 67. <html> … <script> sendMessageToServer(); </script> … </html> @giacomozecchini #brightonSEO When the WRS executes the script, the function sends a message back to the server.
  • 68. Debugging example #2 Know if there is a problem downloading CSS or JS files @giacomozecchini #brightonSEO
  • 69. <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <script> … window.addEventListener('error', function(err) { if (isDownloadError(err)){ sendMessageToServer(err); } }, true); … </script> … </head> … </html> @giacomozecchini #brightonSEO If there is an error and it's a CSS or JS load error you can send a message back to the server. This works for HTTP/DNS/Network errors, Robots.txt, fetch timeouts, etc.
  • 71. There are some products out there but all of them focus on users and not on search engines. @giacomozecchini #brightonSEO
  • 72. Search engines are different and you need to solve different problems. @giacomozecchini #brightonSEO
  • 73. You should be careful adding new code to your website! @giacomozecchini #brightonSEO
  • 74. Web Performance issues You don’t want to slow down the user experience with something you need only for search engines. @giacomozecchini #brightonSEO
  • 75. Web Performance issues Check for the User-Agent and run the script only for search engines. @giacomozecchini #brightonSEO
  • 76. Crawl budget You don’t want to consume your crawl budget on these requests. @giacomozecchini #brightonSEO
  • 77. Crawl budget Host your debugging server on a different domain or subdomain. @giacomozecchini #brightonSEO
  • 78. There are many other possible problems, you just need to find a solution for them. @giacomozecchini #brightonSEO
  • 80. The simpler a page is, the more chances it will render correctly. The majority of pages are just fine. @giacomozecchini #brightonSEO
  • 81. If you work on big or complex websites you may encounter rendering problems. @giacomozecchini #brightonSEO
  • 82. Debugging rendering problems is a very time consuming task.. @giacomozecchini #brightonSEO
  • 83. ..but, if you use the right approach you can cut down the time it takes. @giacomozecchini #brightonSEO
  • 84. You can use this approach as a one time debugging script to get more information or as a monitoring system. @giacomozecchini #brightonSEO
  • 85. Thank You! Got questions? DM me on Twitter. @giacomozecchini