Bagaimana github begitu cepat?

12

Ketika Anda menelusuri repositori di github (misalnya https://github.com/mojombo/jekyll/tree/master/bin ) rasanya seperti menggunakan ajax dan tidak memuat ulang seluruh halaman setiap saat. Namun url benar-benar berubah (tidak hanya setelah #).

Saya sudah menemukan artikel ini di mana mereka menulis tentang backend mereka: https://github.com/blog/530-how-we-made-github-fast

Tetapi apakah ini benar-benar seluruh trik?

Halaman saya tidak pernah terasa secepat itu dan saya sudah menggunakan yslow untuk mengoptimalkannya.

peq
sumber
Sepertinya tidak begitu cepat di IE8, yang saya anggap tidak mendukung fitur HTML5 ini. Di IE8, ketika URL berubah seluruh halaman tampaknya dirujuk.
MrWhite
@ w3d Saya pikir GitHub berasumsi bahwa Anda cukup progresif untuk menggunakan sesuatu selain IE jika Anda menggunakan git. Mereka mungkin juga hanya memutuskan untuk tidak mendukung IE.
sholsinger

Jawaban:

7

Perubahan URL adalah campuran dari fitur lama HTML saat memanggil tag A dengan hash,

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

yang memungkinkan menghubungkan bagian-bagian dari halaman yang sama tanpa memuat ulang sama sekali, dan objek jendela JavaScript HTML5 baru

window.onhashchange

Objek baru ini adalah pengendali acara, yang menyala ketika tautan dengan hash diklik, jadi mungkin untuk menangani acara itu dengan JavaScript dan kemungkinan riwayat peramban dan tombol kembali. Ini contohnya

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

window.onhashchange = hashChanged;

Mozzila Developer Network window.onhashchange Page

jQuery hashchange plug-in lintas acara browser

Victor Debone
sumber
Tetapi github tidak memiliki hash di url. Bagaimana ini dilakukan?
peq
3
ok, temukan: spoiledmilk.dk/blog/…
peq