In che modo github è così veloce?


12

Quando navighi su repository su github (ad esempio https://github.com/mojombo/jekyll/tree/master/bin ) sembra che usi ajax e non ricarichi l'intera pagina ogni volta. Tuttavia, l'URL cambia davvero (non solo dopo il #).

Ho già trovato questo articolo in cui scrivono del loro backend: https://github.com/blog/530-how-we-made-github-fast

Ma è davvero tutto questo il trucco?

Le mie pagine non sembrano mai così veloci e sto già usando yslow per ottimizzarlo.


Sembra non così veloce in IE8, che presumo non supporti questa funzionalità HTML5. In IE8, quando l'URL cambia, l'intera pagina sembra essere refereshed.
MrWhite,

@ w3d Penso che GitHub stia assumendo che tu sia abbastanza progressivo da usare qualcosa di diverso da IE se stai usando git. Potrebbero anche aver deciso di non supportare IE.
Sholsinger,

Risposte:


7

La modifica dell'URL è un mix di una vecchia funzionalità di HTML quando si chiama un tag A con hash,

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

che rende possibile il collegamento di parti della stessa pagina senza ricaricare affatto e un nuovo oggetto finestra HTML5 JavaScript

window.onhashchange

Questo nuovo oggetto è un gestore di eventi, che si attiva quando si fa clic su un collegamento con hash, quindi è possibile gestire quell'evento con JavaScript e possedere la cronologia del browser e i pulsanti Indietro. Ecco un esempio

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

window.onhashchange = hashChanged;

Rete di sviluppatori Mozzila window.onhashchange Page

Plug-in cross-browser di eventi hashchange jQuery


Ma github non ha hash nell'URL. Come si fa?
peq,

3
ok, l'ho trovato: spoiledmilk.dk/blog/…
peq
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.