Comment Github est-il si rapide?


12

Lorsque vous parcourez les référentiels sur github (par exemple https://github.com/mojombo/jekyll/tree/master/bin ), il semble qu'il utilise ajax et ne recharge pas la page entière à chaque fois. Cependant, l'URL change vraiment (pas seulement après le #).

J'ai déjà trouvé cet article où ils écrivent sur leur backend: https://github.com/blog/530-how-we-made-github-fast

Mais est-ce vraiment tout le truc?

Mes pages ne se sentent jamais aussi vite et j'utilise déjà yslow pour l'optimiser.


Il ne semble pas si rapide dans IE8, ce qui, je suppose, ne prend pas en charge cette fonctionnalité HTML5. Dans IE8, lorsque l'URL change, la page entière semble être refaite.
MrWhite

@ w3d Je pense que GitHub suppose que vous êtes assez progressif pour utiliser autre chose que IE si vous utilisez git. Ils peuvent également avoir simplement décidé de ne pas prendre en charge IE.
sholsinger

Réponses:


7

Le changement d'URL est un mélange d'une ancienne fonctionnalité de HTML lors de l'appel d'une balise A avec des hachages,

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

qui permet de lier des parties de la même page sans rechargement du tout, et un nouvel objet de fenêtre JavaScript HTML5

window.onhashchange

Ce nouvel objet est un gestionnaire d'événements, qui se déclenche lorsqu'un lien avec des hachages est cliqué, il est donc possible de gérer cet événement avec JavaScript et de possibiliser l'historique du navigateur et les boutons de retour. Voici un exemple

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

window.onhashchange = hashChanged;

Page window.onhashchange de Mozzila Developer Network

Plug-in multi-navigateur d'événements jQuery hashchange


Mais github n'a pas de hachage dans l'url. Comment cela se fait-il?
peq

3
ok, je l' ai
peq
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.