For the browsers that do not support Ajax you implement the Permutations
pattern. The Permutations pattern is an implementation of the separation of concerns (Resource and Representation) as defined by REST. The idea behind the Permutations pattern is to offer the content that a client is interested in and can process.
The problem with most server side frameworks is that it is difficult to implement the Permutations pattern because we are used to coding to a URL. For example, let's say we are referencing the HTML page
http://mydomain.com/content/page.jsp The reference to page.jsp locks you into using page.jsp only and the
JSP technologies. To generate the right content page.jsp has to contain the appropriate logic.
In a Permutations pattern approach the client would reference the URL
http://mydomain.com/content/page Then based on the type of the client one of the following contents would be returned
http://mydomain.com/content/pageajax.jsp http://mydomain.com/content/pagenonajax.jsp Which specific URL is called depends on the logic of the Permutations pattern. Some of you will say, "Hey this is URL rewriting". Absolutely, it is URL rewriting, but with the twist of a more sophisticated logic than what most URL rewriting implementations are capable of. The only URL rewriting module that is getting close to this is the new Apache 2.2 URL rewriter.
Ajax is not slow and does not introduce overhead. It seems like that because most Ajax applications are intended to be used in broadband situations. Will Ajax slow down a server? Depends on the server. For example the new Apache 2.2.x and Jetty 6.x servers are Ajax ready. They have introduced threading and resource logic that is Ajax "compliant". Other servers? Well there you might be out of luck.