Crawlable Ember Apps

While I’m the first to admin I don’t know anything… Google is already doing some interesting things when it comes to web apps. https://twitter.com/mattcutts/status/131425949597179904

I have also written a blog post about this topic. I tried to give a little overview and presented our approach (also using the Hashbang Approach already mentioned here).

If you’re looking for a fully automated service to manage the whole part of creating pre-rendered HTML snapshots and making sure the snapshots are updated regularly you should have a look at http://getseojs.com/ (it’s free)

Some benefits to other approaches are:

  • it’s effortless, you don’t need to setup and operate your own phantomjs server
  • snapshots are created and cached in advance so the search engine crawler won’t be put off by slow page loads
  • snapshots are updated regularly

Also, if you’re running Rails on the server-side it’s super easy to set it up, just install the gem and configure an api token: https://github.com/seojs/seojs-ruby

1 Like

If you’re running Node.js on your backend, we just released a middleware for express.js which is just as easy to install as the ruby gem: express-seojs - npm

1 Like

I just came Across this resource that does prerendering of your page for multiple languages (Rails, node, …): https://github.com/collectiveip/prerender

Hi borisrorsvort,

Did you end up using prerender? If yes, was it a delight? :smile: I am considering to use it for my app as well.

We haven’t tried yet. But I’ll keep you posted :wink:

A little late to reply, but I had to solve the problem of building a crawlable ember app not too long ago and this is the resulting project: https://github.com/zipfworks/ember-prerender.

I started out using collectiveip’s prerender code, which works fairly well, but I wanted to try coupling the render service more closely with ember by loading a persistent ember app into phantomjs and sending route transitions as rendering requests come in. I also decided to have the routes notify ember-prerender that the page has been fully rendered by resolving an Ember.RSVP promise, which avoids having to wait an arbitrary amount of time before calling a page rendered. I experimented with swapping out phantomjs for jsdom, which works quite well aside from being slower than phantomjs.

Any feedback is much appreciated.

2 Likes

There was a nice talk on Spreeconf 2014 by Antonio Silveira from Godaddy. Go to the Q&A part, and listen to the first question. It will give You an answer. You can check it out here: