I think at some point before AJAX was the norm for consumer-facing web-apps, I probably thought on-demand loading was cool, too. Now, it's usually a usability nightmare. It's even worse if we're talking about responsive sites on mobile devices because they've got to serve a variety of clients on a variety of connection speeds. Last night, while drinking a glass of wine and trying to do some on-line shopping on my phone, I ended up at multiple e-commerce websites that had implemented on-demand loading. None of them nailed it. Some were better than others. The exact use case on all the sites was this:
- User selects some category ("Men's Shirts" or "sale")
- A list of the first N results is loaded, the user can scrolls vertically (e.g., 1 column, N rows)
- When the user gets to the bottom of the results, either the page ajax-loads the next N number, or the user can click to initiate the loading of the next N results.
- You just trashed my back button. I'm scrolling down your seemingly infinite list of shirts. I find one that I want to take a closer look at and in doing so. I click on it, decide I either do or don't want to add it to my cart. I'd like to continue shopping now, but when I hit back, I'm at the "top" of your list (e.g., I need to scroll down and on-demand load to get to where I left off). Navigating back to the product list doesn't help of course. That's a pretty terrible experience. I am now forced to open in a new tab when I return to your product list. (Hint: Don't break this functionality if you're doing on demand loading coughhugoboss.comcough)
- In using on demand loading, you are relinquishing the control you had over the quality of my experience when I visit your site. That's because although I'm staring at your fancy-loading-animated-gif-that-looks-eerily-like-facebooks, it can only go as fast as my connection permits. There were times last night when I was browsing and sites would take between 5 and 10 seconds to load the next N results. (Hint: If your Ajax request takes as long or longer than a full page load, that's a problem). Of course, this could be due to multiple factors -on either end- but as far as I'm concerned you need to address as many of them as you can from a developer standpoint:
- My connection was slow, or inconsistent (fallback to normal pagination on your end if speed is below X/s or at least provide a button prompting me to load the next page)
- Your server is not [consistently] fast (hook up a reverse proxy, data-cache...reduce payload, etc.)
The bottom line is, don't punish me for having a less-than-perfect connection if you can help it especially when you are assuming your site will be consumed by mobile clients (e.g., it's responsive).
So, if you're thinking about using on-demand loading, think through it a little bit. Make the end-user experience the most important factor you consider. Don't assume they're on a fast connection, especially if you're going the responsive route. My patience on a mobile device is not the same as it is when I've got a keyboard and mouse in front of me.comments powered by Disqus