I have a SEO question for single page applications.

We're working on a SPA (not yet public) that displays tables of numeric data to users. The data volume is large, number aggregations are costly and consistent state must be kept under a high number of concurrent users. All of these cause high strain on the servers.

Since this is an AJAX application, for crawlers we serve HTML content following recommended practices (like e.g. ?_escaped_fragment_=...).

The application is optimized for usage patterns that a human user would generate, but a crawler indexing the entire site would cause a spike.

The application's architecture allows us to scale both vertically and horizontally but that means more money spent on hardware. A cheaper solution would be to serve the search engines the HTML content with random data in it, instead of the real numbers that are costly to generate.

Everything will be the same as what a user would see in the browser but with random numbers. Search engine wouldn't make sense of the numbers anyway so there is no point in loading the servers to build them.

As I said, my question is SEO related. We're not trying to do SEO optimizations or tricking search engines, we just want to lower the load on the server. But we're worried this would impact the ranking of the application? So would it?

  • The only thing you are missing is that it is nearly impossible to know when and how a search engine would visit your site. Yes Googlebot, for example, can be found on a set IP address blocks and use known domain names and user agents, but Google will also visit your site from other unknown IP addresses and domain names with user agents that disguise themselves as a normal user. Google will compare results and if the results differ, Google will assume that you are gaming the system. This is measured over a number of pages and over a period of time. Find another way.
    – closetnoc
    Commented Oct 17, 2014 at 14:56
  • @closetnoc: thanks for the response but could you expand a bit on your comment? Are you saying there is no way to detect a bot?
    – bd_bd
    Commented Oct 17, 2014 at 15:07
  • No. Bots can be detected. However, Google visits your site external to it's network as a user and compares the results they get with the bot to what a user sees. These visits are completely anonymous and you will never know that Google has compared your page results. Google does not like sites that show different pages to googlebot and users.
    – closetnoc
    Commented Oct 17, 2014 at 15:17

2 Answers 2


In my opinion, you shouldn’t serve different content for users and search engines; it’s called cloaking and as you most probably know, it’s a bad SEO practice. And even if you don’t want to manipulate search engines results, I think Google bots couldn’t make any difference; as you know, they’re only bots.

When you say search engines wouldn’t care about fake data in the tables, you’re actually wrong. The search engines bots want the same data than users. Indeed, they need the same data to permit to users to find again a result in the SERPs.

Actually, I think you found the solution even if this is expensive. Except the fact to optimize your architecture site, I don’t see how you could optimize the performance of the site (and thus SEO).


Since this is an AJAX application anyway, write the data into the pages separately from your escaped fragments. Users would generate two AJAX requests:

  1. GET /fragment?id=12345 that would contain the text and HTML for the screen with a placeholder for the data
  2. GET /data?id=12345 that would be the actual data to write into the screen (maybe the data would be in JSON format).

You could the have a robots.txt like:

Disallow: /data

So that users could get the data, but search engine bots wouldn't access it. Search engine bots would still be able to get the text and other information from the /fragment URL using the normal ?_escaped_fragment_= crawling method.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.