Как GitHub так быстро?

12

Когда вы просматриваете репозитории на github (например, https://github.com/mojombo/jekyll/tree/master/bin ), создается впечатление, что он использует ajax и не перезагружает всю страницу каждый раз. Однако URL действительно меняется (не только после #).

Я уже нашел эту статью, где они пишут о своем бэкенде: https://github.com/blog/530-how-we-made-github-fast

Но действительно ли это весь трюк?

Мои страницы никогда не чувствуют себя так быстро, и я уже использую yslow для их оптимизации.

реч
источник
Кажется, не так быстро в IE8, который, я полагаю, не поддерживает эту функцию HTML5. В IE8, когда URL-адрес изменяется, кажется, что вся страница обновляется.
MrWhite
@ w3d Я думаю, что GitHub предполагает, что вы достаточно прогрессивны, чтобы использовать что-то кроме IE, если вы используете git. Возможно, они просто решили не поддерживать IE.
Шолзингер

Ответы:

7

Изменение URL - это сочетание старой функции HTML при вызове тега A с хешами,

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

это позволяет связывать части одной и той же страницы без перезагрузки, а также новый объект окна HTML5 JavaScript

window.onhashchange

Этот новый объект - это обработчик событий, который срабатывает при щелчке по ссылке с хэшами, поэтому можно обрабатывать это событие с помощью JavaScript и использовать историю браузера и кнопки возврата. Вот пример

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

window.onhashchange = hashChanged;

Сеть разработчиков Mozzila window.onhashchange

Подключаемый модуль кросс-браузерного события jQuery hashchange

Виктор Дебоне
источник
Но у github нет хеша в URL. Как это сделать?
peq
3
хорошо, нашел это: spoiledmilk.dk/blog/…
peq