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.