SEO for Ajax and Silverlight Applications
SEO for Ajax and Silverlight Applications
Search engine optimization or SEO is a key thing for web sites and key ingredient is indexability, which works well for static content. However, the model breaks down as applications become more dynamic and start using Ajax or RIA-based technologies such as Silverlight (or Flash) to dynamically fetch and display content using client-side logic. In fact, often the HTML page simply becomes a shell containing presentation and behavior, and doesn't contain the meaningful data that needs to be indexed. The fact that the application is data-driven implies that there wouldn't be much useful data to extract from it, even if it were to be indexed. I'll additionally claim that most post-back based sites also suffer from lack of indexability, because fundamentally the model that works with search engines is navigation.
At MIX07, I presented a pattern in my Ajax patterns talk around improving indexability for Ajax and Silverlight applications in the context of a slide show example. I am putting down in writing, what I described on-stage, with the hope of fleshing it further based on comments. As feared, writing this turned out to be lengthier than expected. However, I hope this will be an interesting read. This is mostly a discussion of the pattern itself but if you're interested in seeing a working sample as well, check out the SlideShow server control in the presentation download.
I still don't have a good name for the pattern. Perhaps I'll call it "HTML Data Channel for RIAs" ... suggestions on naming are also welcome... or is there an existing name for this approach? At a high level, the idea is to basically use static HTML or more accurately said, semantically correct markup, embedded in the page as the data delivery mechanism for an RIA.
The scenario from my demo is as follows: I have a page that has a flickr-like tag cloud and a slide show with fancy transition effects for displaying the photos matching the selected tag. I am using Ajax and Silverlight to implement the next/previous interaction rather than post-backs or navigation to separate pages. Furthermore, tag selections in the tag cloud are handled also in client-side code that uses XMLHttp to fetch the list of photos, and updates the slide show in-place. The problem of course is that the application doesn't score high on indexability. The search engine sees this application as a page with empty placeholder that the client-side code happens to fill with an image on the fly. The goal then is to serve up a page that is search engine friendly without trying to detect a search engine crawler on the server, and without maintaining a parallel static version of the page.
So here is what the SlideShow server control renders out.
[photo #1 description][photo #2 description]...
Essentially the SlideShow control does two things - first it renders out the rich view, a Silverlight