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
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
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? I am considering to use it for my app as well.
We haven’t tried yet. But I’ll keep you posted
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.