Як гітуб так швидко?


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.
sholsinger

Відповіді:


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 Developer Network window.onhashchange Page

Вбудований крос-браузерний модуль події хеш-зміни jQuery


Але github не має хешу в URL-адресі. Як це робиться?
peq

3
Добре, знайшов його: spoiledmilk.dk/blog / ...
PEQ
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.