It can be tempting for a web designer to include many cool elements on a website like fancy slideshows, or “lazy-loading” some elements as the user scrolls down the page, but this client-side rendering is really impacting SEO in a negative way. It used to be that Google, and other search engines, had no way to know which elements on a website were visible or invisible. This understanding led to widespread exploitation as keywords were stuffed into invisible (to human) elements, or into text having a color that matched the background on which it was placed, thus driving SEO rankings up significantly. As more entrepreneurs learned of such exploits, the number of SEO-specific firms grew significantly, as did the number of SPAM messages we would receive about the subject. This all changed with the Google algorithm Panda.
One of the biggest problems with WordPress is that when you activate more than about 25-plugins, performance takes a hit and it usually requires hiring an extra person to fill the roll of server administrator who is skilled in increasing performance not on the application layer where the problem resides, but on the server or even routing layer. As your new professional server admin (~$100,000/year) now decides to add a load balancer ($20/month; Linode), increase the number of back-end PHP server nodes (between $5 and $80/server/month; Linode), and breaks the database off onto its own server (between $60 and $960/server/month; Linode), the real cost of using the open-source WordPress platform as a multi-tool comes into view.
* You deliver all HTML required to render the page, yet hide that content until it is ready to display;
*You “lazy-load” content via AJAX or similar scheme as the user scrolls down the page.
In the first case, you may have a homepage containing a hero slideshow. Each hero slide may have its own H1 and H2 tags. However, as Google renders the page, only one of those slides is going to show up and the additional H1 and H2 tags will become suspect. For the second case, Google is likely not seeing that additional content at all as there is no evidence to suggest that it will follow AJAX calls to gain the additional content. Google can’t grade what it can’t see, so it doesn’t matter how relevant that extra content may be, it will likely not be included in the Google-rendered page.
So, what’s the best way to display content?
* Render everything server-side, and don’t hide elements of any content, if you can help it.
* Rather than a hero slideshow, have a static hero with a single H1 and H2 tag.
*Move any content you once thought was slideshow-worthy to small sections under the hero. Use H3, or higher, tags, as the title of these sections and provide a link to the relevant sub-page of the website within that section.
*For mobile, rather than collapse these sections into a slideshow, make the sections fall one over the other so that all sections are displayed on mobile devices.
*Finally, don’t wait for a user-generated event in order to render SEO-important elements of the site. And while it is common to lazy-load images, images have been shown to have significant SEO value as Google can parse both text and barcodes within images, in addition to being able to determine what might be in the picture. Thus, rather than lazy-loading these images, optimize their size and quality for delivery over the web.
With just these few tips you can turn your SEO score to the positive.