Live data from Hacker News

Javascript apps can be fully crawlable

prerender.io

11–20 of 112 posts

Re: Javascript apps can be fully crawlable

#11
post #3

Why hasn't Google implemented this yet? Their current solution isn't good enough ( https://developers.google.com/webmasters/ajax-crawling/ ).

web apps today are so much more than ajax. You have to actually a full blown DOM tree to get what real user-agents renders

Re: Javascript apps can be fully crawlable

#12

Wouldn't the pre-render based on useragent be penalized because Google doesn't like being shown pages differently than non-Googlebot useragents?

Google doesn't like it when they are shown different content than a browsing user. This is roughly the equivalent of pointing Google Agent to a copy of the page requested that happens to be in Memcached instead of spinning up the full app stack to do the render.

> Google doesn't like it when they are shown different content than a browsing user.

This is exactly correct. Regardless of your motivations.

Re: Javascript apps can be fully crawlable

#14
post #11
post #3

Why hasn't Google implemented this yet? Their current solution isn't good enough ( https://developers.google.com/webmasters/ajax-crawling/ ).

web apps today are so much more than ajax. You have to actually a full blown DOM tree to get what real user-agents renders

If only Google had access to a full blown browser they could use in the crawl engine...

Re: Javascript apps can be fully crawlable

#15
I can see a lot of issues with this (slow, displaying different content to Google can get you penalized, etc)... but this is a really clever hack.

Google is less important (they already execute JS), however it's good for sites like Facebook (which doesn't when you share a link).

Re: Javascript apps can be fully crawlable

#17
post #8

This will get you penalized for having a website that takes forever to load. This is what happens: Googlebot requests page -> your webapp detects googlebot -> you call remote service and request that they crawl your website -> they request the page from you -> you return the regular page, with js that modifies it's look and feel -> the remote service returns the final html and css to your webapp -> your webapp return…

Pretty sure the load time problem can be mitigated by caching.

Re: Javascript apps can be fully crawlable

#18
I tried using phantomjs in the past to serverside render a complex backbone application for SEO, and it was taking over 15 seconds to return a response (which is bad for SEO).

Looking at the prerender's source I did't see any caching mechanism.

What kind of load times have you see rendering your apps?

Have there been recent significant improvements in phantomjs's performance?

Re: Javascript apps can be fully crawlable

#19
post #8

This will get you penalized for having a website that takes forever to load. This is what happens: Googlebot requests page -> your webapp detects googlebot -> you call remote service and request that they crawl your website -> they request the page from you -> you return the regular page, with js that modifies it's look and feel -> the remote service returns the final html and css to your webapp -> your webapp return…

If it doesn't cache, then besides latency, someone could send fake googlebot requests and overload the prerender service, which is unlikely to be able to handle a lot of traffic.

Re: Javascript apps can be fully crawlable

#20
post #17
post #8

This will get you penalized for having a website that takes forever to load. This is what happens: Googlebot requests page -> your webapp detects googlebot -> you call remote service and request that they crawl your website -> they request the page from you -> you return the regular page, with js that modifies it's look and feel -> the remote service returns the final html and css to your webapp -> your webapp return…

Pretty sure the load time problem can be mitigated by caching.

Best case scenario you still have network trips going out to the service, so it's still not a great solution UNLESS the caching was done by your webapp - which is what I spoke about at the end of my comment above.

Unless this works w/o adding network roundtrips on each request, it's not a great idea.

Post reply on HN