Search engine optimization in rich internet applications is starting to come up a lot more. Part of has to do with the fact that rich internet applications are simply becoming more prevalent. But part of it also has to do with the fact that competition in the space has never been at a higher level than it is now. As a result, SEO-ability is starting to become a differentiator especially between Silverlight, which uses plain text XAML, and Flash, which uses a binary SWF. This shouldn't be the case.
I've talked a lot about the myth of Silverlight SEO on my personal blog, so I won't bring it up here. But as the debate heats up, I think it's very important we take a step back and figure out what we want when we try to optimize our rich internet applications for search engines. Therein lies the debate; why and how should rich internet applications be indexed? It first probably makes sense to discuss a few kinds of rich internet applications. So for the SEO discussion, let's divide them into 3 broad categories which I'll talk about in 3 parts: commerce-based RIAs (storefronts), productivity RIAs (mail, office applications, etc), and branded experiences (RIAs meant to enhance a brand or engage the user).
Commerce-based Rich Internet Applications
In the past, the main problem with RIAs was that because they gave a better experience by not refreshing the page, the spiders couldn't differentiate between one page and anotherThis is the most relevant for search engine optimization, but still tricky. If you're using an RIA front end to power your store, you want to make sure that people who search for whatever you're selling will see that item of yours listed in the results. With HTML, this is fairly straight forward. As long as that item is linked somewhere, like a listing of items under a subcategory. the search engines will spider that content, note the URL and provide a direct link into on the search results page. As a webmaster you can optimize that product page with all of the terms and Google juice you want.
In the past, the main problem with RIAs was that because they gave a better experience by not refreshing the page, the spiders couldn't differentiate between one page and another. As a result, even when they could spider content, there was no way for anyone to get directly to the product's page. Luckily that part has changed. Most of the RIA technologies now allow for some form of URL changing and the technology within the app to respond to that URL (this document describes the feature in Flex 3).
So now that we can deep link into a specific part of an application, what does that get is. Here's the main issue, which Josh Tynjala covers well in this blog post. In a storefront we want to expose the product. In the past, we loaded up the page with search terms and crossed our fingers. I think with RIAs we have a better way to do this. If we can work with the search engine companies and expose our data in a structured way, we can get more relevant results and improve the overall find-ability of our applications.
A Possible Solution
why can't we come up with a standard way to expose the data in our RIAs via XML so that search engines can index them, have all the relevant data about them, and then also associate it with a specific URL for deep-linking purposes?As with all rich internet applications, in a storefront, the data is the most important thing and we have the ability to abstract it away so that our presentation layer and our data layer are very separate. The best example of this I've seen is the Flex Directory. Do a view source on that. You'll see an XML document with a listing of all the companies in the directory. The XML file contains their information so search engines can spider it and associate it with that page.
So why can't we come up with a standard way to expose the data in our RIAs via XML so that search engines can index them, have all the relevant data about them, and then also associate it with a specific URL for deep-linking purposes? This is the great thing about RIAs: they give us a way to rethink how we store/access/deal with data. In the storefront example, an XML file for each subcategory that lists all of the products, their information, and then the associated URL would go a long way towards getting more exposure for companies leveraging RIAs on the commerce side. It would also be a great way to provide that data to other devices which would make creating more touch points (mobile devices, video games, etc) a fairly easy task.
We've got a lot to do to get SEO in RIAs totally figured out. Storefronts are the most basic example, but in the next couple of parts I'll talk about what I think we can do about productivity applications and also branded experiences.