The current movement towards AJAX is a good thing. If it really were a movement towards AJAX. In my eyes it is rather a higher acceptance for Javascript applications. Of course, it is quite naturally in the early stages of a “hyped” technology to observe many misuses; they use AJAX just for the sake of using AJAX.
Pages get more voluminous because so much code has to be loaded to the browser (which makes the browser slow again) so you could just begin to use the application. This somehow reminds me of all the flash apps. Waiting for hours to load the page and you’ll stick to that page for half a minute. (I do have a broadband connection. Still a page with 30kb loads 10 times faster than a 300kb page).
A negative example for this is Kiko, a web calendar. It has a nice “Kiko loading” box which already hints that they are doing something wrong. All Javascript files are included via server side scripting instead of loading them via <script src=”xyz.js”> which would allow the browser to cache the file.
Kiko is just one example, there are others doing similar mistakes.
I think that the current usage of AJAX is a misuse of the browser. They are designed to render web pages (i.e. (X)HTML pages). Javascript is a bonus. Large data strucures can slow down browsers enourmously (they are still interpreting Javascript just in time).
As a conclusion I want to come up with some essential features for AJAX applications:
- Keep it bookmarkable. Don’t load everything to one page, let users return to a certain section of your app via their bookmarks.
- Don’t overuse AJAX. Often simple Javascript without server interaction will do. Try to reduce the server callbacks.
- Minimize the code to be loaded. When you don’t have any other choice, consider code downloading.
- Speed up your apps with AJAX. Use AJAX for what it was meant for: tune your existing application at points where postbacks need to reload the same page with only little change.
I’ve created a potential solution to bookmarking and the back and button issues for AJAX and DHTML applications. See my web page for it at http://codinginparadise.org/projects/dhtml_history/README.html