Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Technical SEO in 2018

185 views

Published on

Slides from my talk at Friends of Search in February 2018 where I spoke about the priorities of technical SEO in 2018.

Published in: Internet
  • Be the first to comment

  • Be the first to like this

Technical SEO in 2018

  1. 1. @badams #FOS18 @badams #FOS18 Technical SEO in 2018 Barry Adams Polemic Digital 08 February 2018
  2. 2. @badams #FOS18 Barry Adams ➢ Doing SEO since 1998 ➢ Founder of Polemic Digital ➢ Co-Chief at State of Digital
  3. 3. @badams #FOS18 @badams #FOS18 How Search EnginesWork
  4. 4. @badams #FOS18 Web Search Engines Three distinct processes: 1. Crawler 2. Indexer 3. Query Engine
  5. 5. @badams #FOS18 Web Crawler (Googlebot) • Spiders the web; ➢ Starts with URLs from previous crawls and XML sitemaps • Extracts hyperlinks and adds to crawl queue • Retrieves new and changed content • Access can be restricted with robots.txt
  6. 6. @badams #FOS18 Elements of aWeb Crawler • Crawl ‘Politeness’; ➢ How fast can we crawl a site? • URL Importance; ➢ How often do we need to recrawl a URL? • HTML Parser; ➢ Can we find links in the crawled URL?
  7. 7. @badams #FOS18 Crawler: HTML Parser
  8. 8. @badams #FOS18 Indexer (Caffeine) • Analyses content • Analyses links • Analyses webpage layout • Can be controlled with robots meta tags
  9. 9. @badams #FOS18 Elements of the Indexer • Web Rendering Service; ➢ Renders webpages as a browser would (Chrome 41) • PageRanker; ➢ Calculates a URL’s PageRank • Canonicalisation; ➢ Determines the canonical URL
  10. 10. @badams #FOS18 Web Rendering Service https://developers.google.com/search/docs/guides/rendering
  11. 11. @badams #FOS18 Web Rendering Service • Chrome 41 is the rendering engine; ➢ To be updated to Chrome 62(?) soon • Stateless; ➢ No cookies are saved ➢ Local & Session Storage is cleared
  12. 12. @badams #FOS18 Fetch & Render
  13. 13. @badams #FOS18
  14. 14. @badams #FOS18 PageRanker • Calculates each canonical page’s PageRank; ➢ Links, links, links ➢ Internal and external links both count ➢ PageRank Damping factor • Feeds back to the crawler; ➢ High PR = high crawl priority
  15. 15. @badams #FOS18 Query Engine • Tries to understand the intent of the search; ➢Context ➢Synonyms ➢Entities • Retrieves relevant pages from the index • Ranks pages based on; ➢Content relevance ➢Authority signals ➢Freshness
  16. 16. @badams #FOS18 @badams #FOS18 JavaScript & SEO
  17. 17. @badams #FOS18 Web Search Engines Three distinct processes: 1. Crawler 2. Indexer 3. Query Engine
  18. 18. @badams #FOS18 Web Search Engines Three distinct processes: 1. Crawler 2. Indexer 3. Query Engine
  19. 19. @badams #FOS18 JavaScript & Crawling • Googlebot does not render webpages; ➢ The indexer (Caffeine) does • JavaScript is not executed by the Googlebot crawler; ➢ Links embedded in JavaScript aren’t found by the crawler
  20. 20. @badams #FOS18 JavaScript & Crawling
  21. 21. @badams #FOS18 JavaScript & Crawling No Hyperlinks!
  22. 22. @badams #FOS18 Crawl Inefficiency Crawler • Can’t find hyperlinks • Sends page to Indexer • Cannot crawl any further Indexer • Renders page and executes JS • Sends links back to Crawler • Cannot index any further
  23. 23. @badams #FOS18 JavaScript & Indexing https://www.elephate.com/blog/javascript-vs-crawl- budget-ready-player-one/
  24. 24. @badams #FOS18 JavaScript & SEO • Googlebot (crawler) doesn’t crawl JavaScript • Caffeine (indexer) executes and indexes JavaScript • Further reading: ➢http://www.stateofdigital.com/javascript-seo-crawling- indexing/ ➢https://www.elephate.com/blog/javascript-vs-crawl-budget- ready-player-one/
  25. 25. @badams #FOS18 Fetch & Render
  26. 26. @badams #FOS18 Computed DOM
  27. 27. @badams #FOS18 Computed DOM – Chrome 41 https://search.google.com/test/rich-results
  28. 28. @badams #FOS18 HTML Source vs Computed DOM https://www.diffchecker.com/
  29. 29. @badams #FOS18 @badams #FOS18 Load Speed
  30. 30. @badams #FOS18 https://webmasters.googleblog.com/2018/01/using- page-speed-in-mobile-search.html Load Speed & SEO
  31. 31. @badams #FOS18 Load Speed & SEO Crawl Budget = the maximum amount of time a search engine spider will spend crawling your website before it gives up.
  32. 32. @badams #FOS18 Load Speed & SEO • Fast Load Speed = optimal use of crawl budget
  33. 33. @badams #FOS18 Load Speed https://developers.google.com/speed/pagespeed/insights/
  34. 34. @badams #FOS18 GTMetrix https://gtmetrix.com/
  35. 35. @badams #FOS18 Waterfall chart https://gtmetrix.com/
  36. 36. @badams #FOS18 Chome DevTools: Lighthouse
  37. 37. @badams #FOS18 Identify the Key Bottlenecks • Time to First Byte • Page Weight • Total Requests • JavaScript • Geographic location
  38. 38. @badams #FOS18 Time to First Byte How fast does the server respond? • Slow TTFB can mean: ➢ Slow database ➢ Slow webserver ➢ Long distance between client & server • Solutions: ➢ Optimise database ➢ Upgrade server ➢ Use a Content Delivery Network ➢ Server-side Rendering & Caching
  39. 39. @badams #FOS18 PageWeight How many KB is the webpage? • Large page weight (>500KB): ➢ Unclean code ➢ Large images ➢ Large external files (CSS / JS) • Solutions: ➢ Enable compression ➢ Optimise images ➢ Combine & Minify CSS & JS files ➢ Enable Caching
  40. 40. @badams #FOS18 Total Requests How many separate files are loaded for a single webpage? • Too many requests per page (>20): ➢ Every request is a new HTTP exchange ➢ Some requests can take a long time to complete • Solutions: ➢ Combine external CSS and JS files ➢ Enable client-side caching ➢ Minimise external dependencies (plugins, tracking codes, etc)
  41. 41. @badams #FOS18 JavaScript Is there JavaScript that stops the page from rendering? • Render-blocking JavaScript means: ➢ Crawler cannot parse the page ➢ Browser has to wait for JS to execute • Solutions: ➢ Asynchronous JavaScript ➢ Server-Side Rendering ➢ Not using JavaScript
  42. 42. @badams #FOS18 Long Geographical Distance Is the webserver far from the browser? • Large distance means: ➢ More TCP/IP hops ➢ Slow load times across the board • Solutions: ➢ Host the site in the same country as your audience ➢ Use a Content Delivery Network with good international coverage
  43. 43. @badams #FOS18 Load Speed Resources https://developers.google.com/web/fundamentals/performance/
  44. 44. @badams #FOS18 @badams #FOS18 Structured Data
  45. 45. @badams #FOS18 Structured Data What is Structured Data? • Old search: Keywords • New search: Things Structured Data enables search engines to understand things and their relationships.
  46. 46. @badams #FOS18 http://schema.org/docs/schemas.html
  47. 47. @badams #FOS18
  48. 48. @badams #FOS18 https://developers.google.com/search/docs/guides /intro-structured-data
  49. 49. @badams #FOS18 Structured DataVocabularies
  50. 50. @badams #FOS18 JSON-LD JavaScript Object Notation for Linked Data • W3C Standard since 2010 • Schema.org recommended syntax since June 2013 • Basic units are Name & Value pairs
  51. 51. @badams #FOS18 JSON-LD vs Microdata <script type="application/ld+json"> { "@context": "http://schema.org", "@type": "Book", "name": "Information Architecture: For the Web and Beyond", "publisher": "O'Reilly", "inLanguage": "English", "bookFormat": "Paperback", "offers": { "@type": "Offer", "price": "22.99", "priceCurrency": "GBP" } } </script> <div itemscope itemtype="http://schema.org/Book"> <link itemprop="bookFormat" href="http://schema.org/Paperback"/> <meta itemprop="publisher" content="O’Reilly"/> <meta itemprop="inLanguage" content="English"/> <p itemprop="offers" itemscope itemtype="http://schema.org/Offer">Only <b><span itemprop="price" content="22.99">£22.99</span></b> <meta itemprop="priceCurrency" content="GBP" /></p> <h4>In <span itemprop="name">Information Architecture: For the Web and Beyond</span></h4> </div> Separately in the page’s <head> section In-line with the content HTML in the <body>
  52. 52. @badams #FOS18 Validating https://search.google.com/structured-data/testing-tool/
  53. 53. @badams #FOS18
  54. 54. @badams #FOS18 Typical Errors 1
  55. 55. @badams #FOS18 Typical Errors 2
  56. 56. @badams #FOS18 Typical Errors 3
  57. 57. @badams #FOS18 Google Recommends • Site Information; ➢ Organisation ➢ Contact info ➢ Social profiles ➢ Breadcrumbs ➢ Search box • Content Types; ➢ Local Business ➢ Articles ➢ Books ➢ Job Postings ➢ Products ➢ Recipes ➢ Reviews ➢ … https://developers.google.com/search/docs/guides /intro-structured-data
  58. 58. @badams #FOS18 Organization <script type="application/ld+json"> { "@context": "http://schema.org", "@type": "Organization", "name": "Organisation Name", "url": "https://www.your-company-site.com", "logo": "https://www.your-company-site.com/logo.png", "sameAs": [ "https://www.facebook.com/your-profile", "https://instagram.com/yourProfile", "https://www.linkedin.com/in/yourprofile", "https://twitter.com/yourprofile" ] "contactPoint": [{ "@type": "ContactPoint", "telephone": "+353-123-4567-890", "contactType": "Sales" }] } </script>
  59. 59. @badams #FOS18
  60. 60. @badams #FOS18 Local Business <script type="application/ld+json"> { "@context": "http://schema.org", "@type": "Restaurant", "url": "http://www.davessteakhouse.com", "name": "Dave's Steak House", "address": { "@type": "PostalAddress", "streetAddress": "148 W 51st St", "addressLocality": "New York", "addressRegion": "NY", "postalCode": "10019", "addressCountry": "US" }, "telephone": "+12122459600", "menu": "http://www.example.com/menu", "acceptsReservations": "True", "openingHoursSpecification": [ { "@type": "OpeningHoursSpecification", "dayOfWeek": [ "Saturday", "Sunday" ], "opens": "11:30", "closes": "22:00" }, { "@type": "OpeningHoursSpecification", "dayOfWeek": [ "Monday", "Tuesday", "Wednesday", "Thursday", "Friday" ], "opens": "10:00", "closes": "23:00" }, ] } </script>
  61. 61. @badams #FOS18 • Primary data comes from Google My Business • Make sure your on-site Structured Data matches up
  62. 62. @badams #FOS18 Search Box <script type="application/ld+json"> { "@context": "http://schema.org", "@type": "WebSite", "url": "https://www.website.com/", "potentialAction": { "@type": "SearchAction", "target": "https://www.website.com/search?q={search_term_string}", "query-input": "required name=search_term_string" } } </script>
  63. 63. @badams #FOS18 Search Box Sitelink
  64. 64. @badams #FOS18 Product <script type="application/ld+json"> { "@context": "http://schema.org/", "@type": "Product", "name": "Executive Anvil", "image": "http://www.example.com/anvil_executive.jpg", "description": "Sleeker than ACME's Classic Anvil, the Executive Anvil is perfect for the business traveler looking for something to drop from a height.", "mpn": "925872", "brand": { "@type": "Thing", "name": "ACME" }, "offers": { "@type": "Offer", "priceCurrency": "USD", "price": "119.99", "priceValidUntil": "2020-11-05", "itemCondition": "http://schema.org/UsedCondition", "availability": "http://schema.org/InStock", "seller": { "@type": "Organization", "name": "Executive Objects" } } } </script>
  65. 65. @badams #FOS18 Product Snippets
  66. 66. @badams #FOS18 Reviews <script type="application/ld+json"> { "@context": "http://schema.org/", "@type": "Product", "name": "Executive Anvil", "image": "http://www.example.com/anvil_executive.jpg", "description": "Sleeker than ACME's Classic Anvil, the Executive Anvil is perfect for the business traveler looking for something to drop from a height.", "mpn": "925872", "brand": { "@type": "Thing", "name": "ACME" }, "aggregateRating": { "@type": "AggregateRating", "ratingValue": "4.4", "reviewCount": "89" }, } </script>
  67. 67. @badams #FOS18 Review Snippets
  68. 68. @badams #FOS18 https://technicalseo.com/seo-tools/schema-markup-generator/
  69. 69. @badams #FOS18 Google Tag Manager - Static
  70. 70. @badams #FOS18 Google Tag Manager - Dynamic In Theory
  71. 71. @badams #FOS18 Google Tag Manager - Dynamic https://moz.com/blog/using-google-tag-manager-to- dynamically-generate-schema-org-json-ld-tags
  72. 72. @badams #FOS18 @badams #FOS18 Summarised…
  73. 73. @badams #FOS18 Technical SEO in 2018 • Make friends with JavaScript; ➢ Understand crawling vs indexing • There’s no such thing as ‘too fast’; ➢ Use the right tools to solve your load speed challenges • Structured Data is king; ➢ Websites are data sources for machine systems
  74. 74. @badams #FOS18 @badams #FOS18 ThankYou barry@polemicdigital.com www.polemicdigital.com @polemicdigital @badams

×