¿Cómo es tan rápido github?

12

Cuando navega por los repositorios en github (por ejemplo, https://github.com/mojombo/jekyll/tree/master/bin ) parece que usa ajax y no vuelve a cargar toda la página cada vez. Sin embargo, la URL realmente cambia (no solo después del #).

Ya encontré este artículo donde escriben sobre su backend: https://github.com/blog/530-how-we-made-github-fast

¿Pero es este realmente el truco completo?

Mis páginas nunca se sienten tan rápido y ya estoy usando yslow para optimizarlo.

peq
fuente
Parece que no es tan rápido en IE8, lo que supongo que no es compatible con esta función HTML5. En IE8, cuando la URL cambia, toda la página parece ser actualizada.
MrWhite
@ w3d Creo que GitHub está suponiendo que eres lo suficientemente progresivo como para usar algo que no sea IE si estás usando git. También pueden haber decidido no admitir IE.
sholsinger

Respuestas:

7

El cambio de URL es una mezcla de una característica antigua de HTML cuando se llama a una etiqueta A con hashes,

<a href="#home">Go to my home</a>
<p>TextTextTextTextTextTextText</p>
<a id="home">

eso hace posible vincular partes de la misma página sin tener que volver a cargarlas, y un nuevo objeto de ventana HTML5 JavaScript

window.onhashchange

Este nuevo objeto es un controlador de eventos, que se activa cuando se hace clic en un enlace con hashes, por lo que es posible manejar ese evento con JavaScript y permitir el historial del navegador y los botones de retroceso. Aquí hay un ejemplo

function hashChanged() {
    if (location.hash === "#home") {
        showPage('home');
    }
}

window.onhashchange = hashChanged;

Red de desarrolladores de Mozzila window.onhashchange Page

jQuery hashchange event cross-browser plug-in

Victor Debone
fuente
Pero github no tiene hash en la url. ¿Cómo se hace esto?
Peq
3
ok, lo encontró: spoiledmilk.dk/blog/...
peq