Given the prevalence of Jquery and Ajax request capabilities in modern web design, I’m still surprised by the amount of websites that still rely on the request -> retrieve format of web design.
We all know that speed matters on the web, and delays in getting information, or while waiting for a page to load can have a huge effect on the users experience and can sometimes drive traffic away from a website.
But with the technology available to us, it doesn’t have to be this way. It’s an exciting time to be a developer for the web, given what we can now do! So let’s start updating out sites to be “realtime” user experiences, where the page doesn’t visibly load.
A brilliant example of this would be GitHub and their project browser. Every time you click on a file or folder, it smoothly passes you to the next page, undetectably; the interface simply slides to show the next page. But the address bar updates, thus allowing you to bookmark specific places or files, but to the user it is clean and smooth. No pages loading.
For the most part our interfaces should be none blocking. We want the pages to update and refresh as we use them, showing the new information (though there are some key exceptions such as Credit Card Transactions where you want a confirmed response before processing any further).
After all users want to use web applications without interruptions or delays, and having blocking sections in there can negatively affect user experience and potentially drive clients away from your application. Users don’t generally need to see loading messages, or other feedback relating to the requests passing in the background, (though don’t misunderstand, not all feedback is bad, but it should be un-intrusive and non-blocking, like a small spinner for instance as a username is being checked and validated).
By using asynchronous requests, where the client side session updates immediately while the server updates in the background we can achieve cleaner and more user experience driven web applications. And we are starting to develop the tools to do so.
A fantastic example of this would be SpineJS that aims to let you completely decouple the server side mechanics from the user experience, which on the hole makes for neater web applications that are more pleasurable to use.
I’d love to see more of this type of development, and people should start making more use of it.