I’ve been excited for awhile now about going retro. Going retro to the days of 3-tiered GUI applications and substituting VB+DCE/CORBA+DB with AJAX+REST+DB. We got to talking about this quite extensively today in a Red Hat internal mailing list after the announcement of Red Hat’s participation in the Google GWT project.
One problem I had problems reconciling with was the search engine problem. If your web application is rendered dynamically through AJAX and GWT-controlled pages how will a search engine index your site? Michael Neale came to the rescue with:
If you want search engine crawling – then its not a web app, its a web site.
This statement is simple but profound. It makes sense because a web app is highly interactive, dynamic, and usally un-indexable. He’s on to something. He talks a little more in detail about it here. Thanks Mike!
Dec 14, 2008 @ 21:00:15
From the user’s point of view, aren’t they both the same? AFAIR, “web app” is a term coined in J2EE land, and I don’t remember that word used in non-J2EE communities early on. IMO, searchability is an orthogonal issue, and matters if the information is public either globally or within an intranet. If the information is a candidate for search, but is not searchable because of the technology choice, then that is a wrong choice of technology.
Dec 24, 2008 @ 10:16:13
The problem you cite is GWT specific, GWT generates the HTML layout using JavaScript APIs.
Anyway this problem is interesting because it affects to “One Single Web Page” applications and web sites. These days the difference between web based applications and web sites is becoming irrelevant.
I think we can avoid the search engine problem of pure AJAX applications by using “permalinks”, visible or hidden. Permalinks are especial links to instruct Google (or any other web crawler) to traverse our AJAX intensive web application using page based navigation, every page is, as I like to name, a “fundamental state” of our intensive AJAX web application.
I’ve tried this approach with ItsNat, other frameworks using AJAX like Wicket and JSF (of course with AJAX) can use this approach. The problem is GWT because this framework isn’t template based and doesn’t generate an initial web page with markup.
For instance, this web application is searchable. More details here, and here a live example of this approach.
Dec 24, 2008 @ 10:28:12
Another proof of concept is this web application. It runs in the same web page, there is no reload. If you click on the links bottom, Help and Contact/Use Terms/Privacy/Credits you will see two simulated popups.
These links are false links because they contain onclick=”return false”, when clicked an AJAX event is sent to the server to show the popup. However Google crawler doesn’t see this onclick handler and traverse the link, in the server this link is a “gate” to the state of “popup shown”, in some way the server simulates internally the steps to go this state using AJAX navigation (of course without user interaction).
Dec 29, 2008 @ 05:22:21
Great stuff Jmarranz. I appreciate the links and ideas!