Para lo de la URL, HTML5
pushState()
:
https://developer.mozilla.org/en-US/...rowser_history
Luego para cargar el contenido ya lo haces con AJAX.
En la última versión de rails por ejemplo eso funciona por efecto con
turbolinks. Supongo que se implementará poco a poco como forma de trabajar habitual, aunque no entiendo muy porqué.