Como o github é tão rápido?

12

Quando você navega nos repositórios no github (por exemplo, https://github.com/mojombo/jekyll/tree/master/bin ), parece que usa ajax e não recarrega a página inteira o tempo todo. No entanto, o URL realmente muda (não apenas após o #).

Eu já encontrei este artigo em que eles escrevem sobre seu back-end: https://github.com/blog/530-how-we-made-github-fast

Mas esse é realmente o truque?

Minhas páginas nunca parecem tão rápidas e já estou usando o yslow para otimizá-lo.

peq
fonte
Parece não tão rápido no IE8, que suponho que não suporta esse recurso HTML5. No IE8, quando o URL muda, a página inteira parece ter sido atualizada.
precisa saber é o seguinte
@ w3d Acho que o GitHub está assumindo que você é progressivo o suficiente para usar algo diferente do IE se estiver usando o git. Eles também podem ter decidido não apoiar o IE.
sholsinger 7/09/11

Respostas:

7

A alteração do URL é uma mistura de um recurso antigo do HTML ao chamar uma tag A com hashes,

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

que possibilita vincular partes da mesma página sem recarregar e um novo objeto de janela JavaScript HTML5

window.onhashchange

Esse novo objeto é um manipulador de eventos, que é acionado quando um link com hashes é clicado, portanto, é possível manipular esse evento com JavaScript e possibilitar o histórico do navegador e os botões voltar. Aqui está um exemplo

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

window.onhashchange = hashChanged;

Janela da Rede de Desenvolvedores da Mozzila.

Plug-in de navegador cruzado do evento jQuery hashchange

Victor Debone
fonte
Mas o github não tem hash no URL. Como isso é feito?
peq
3
ok, achei: spoiledmilk.dk/blog/…
peq