Constraints in design can never be avoided. Every problem has a context, and every context has its own unique set of constraints. So it is with web development. Early websites were simply static HTML pages that you requested from the server. Each new page you go to is a completley new request with completely new HTML. Sites began implementing layouts on websites that kept consistent headers and footers across all pages. So although users are seeing the page go blank and then reload, sites would still attempt to create a smooth experience thoughout.
Now, in 2012, not much has changed. Sure, we have more friendly routing and much faster page loads, but the experience has remained roughly the same. For every new page a user navigates to, the browser window goes blank and a completely new page is rendered.
A single page web
The effort towards making single page web applications has been focused on websites that have a lot of interactivity. Specifically, applications that would typically be found on the desktop are being made into single page web applications. Although this is the most logical place to implement these new technologies, it shouldn’t stop there. The entire web deserves this same intuitive experience. Whether its a calendar app or a blog, every website should be a “single page app”.
Re-rendering navigation is not acceptable
When the web was simply a collection of static HTML documents being downloaded by users, and there was no way to display new information without downloading an entirely new page, re-rendering a site’s navigation was completely acceptable. In fact, it was necessary due to the constraints of the web at the time.
Some may argue that there are no reasons to make informational websites like blogs or brochure websites single page. This attitude comes from years of seeing navigation re-render on every website. The typical re-rendering is not actually the most intuitive design for websites, it’s just become the accepted design for websites.
What’s in a website?
Even a website as simple as a blog is an application. It’s something of a micro-application, within a browser, within an operating system; a micro-application designed to allow users to navigate and consume content. As with desktop applications, any links or controls that consistently apply to each page of the website should remain rendered on the screen.
How odd would it be if your browsers menu bar options disappeared and then reappeared each time you switched tabs?
Developers, let’s keep moving in the right direction
- Doesn’t interfere with the standard development patterns
- Degrades gracefully
- Doesn’t require extra work from the developer
- Still allows for crawler access to content without doubling up on work
As popular frameworks and platforms make it easier to use this pattern, we will see an overall improvement in the web experience. I’d like to see WordPress implement something similar using PJAX or something similar.
Find any interesting project people are working on to this end? Add them to the comments.