Haruskah Github digunakan sebagai CDN untuk perpustakaan javascript? [Tutup]

95

Melayani pustaka javascript dari CDN dan bukan server Anda sendiri hadir dengan keuntungan yang luar biasa. Lebih sedikit pekerjaan untuk server Anda, kemungkinan CDN memiliki salinan yang lebih dekat dengan pengguna daripada server Anda, tetapi yang terpenting adalah peluang bagus bahwa browser pengguna Anda sudah menyimpannya dalam cache dari URL itu. Yang terakhir berarti lebih sedikit pekerjaan total untuk semua orang, jadi ini jelas merupakan kemenangan di sekitar, dan kemungkinan besar semakin sering kita (pengembang) mengandalkan CDN untuk melayani javascript kita.

Tetapi CDN javascript yang populer (Google, Microsoft, lainnya?) Hanya menampung sejumlah kecil file. Untuk orang lain, kami memiliki pilihan untuk menghostingnya sendiri, atau ... menggunakan server kendali sumber sebagai sejenis CDN. Sepertinya Github atau yang serupa tidak memiliki cache file yang didistribusikan secara geografis yang dioptimalkan untuk disajikan secara global. Tetapi jika ini adalah praktik umum, maka ada kemungkinan besar browser pengguna akan menyimpannya di cache. Argumen untuk memindahkan pekerjaan dari server kami ke github hanya valid jika Github secara sukarela melakukan ini secara sukarela.

Jadi, apakah ini praktik yang umum? Haruskah kita mendorong satu sama lain untuk melakukan ini? Apakah Github keberatan? Apakah mereka memiliki kebijakan resmi?

Leopd
sumber
5
Apa yang terjadi jika penulis mengatur ulang struktur filenya? Itu bukan kode masalahnya di ratusan situs web rusak.
Raynos
2
@Raynos Jika Anda adalah "pembuat" repo GitHub, maka Anda mengontrol perubahannya.
Chris Jacob
2
@Tokopedia Jika saya mengubah struktur file saya sendiri, bukan masalah saya jika Anda menunjuk ke bagian kode yang sudah tidak ada lagi.
Raynos
5
Anda dapat menggunakan rawgithub.com untuk membagikan HTML, JavaScript, atau CSS yang sedang dalam proses dengan seseorang untuk demo singkat, atau mungkin menggunakannya dalam pengujian jsPerf.
Giovanni Cappellotto
Pertanyaannya harus dibuka kembali karena sekarang ada jawaban yang benar dalam komentar di atas dari @GiovanniCappellotto.
Supersharp

Jawaban:

94

Anda tidak boleh melakukannya untuk file JavaScript jika Anda peduli dengan kinerja atau kompatibilitas IE9.

GitHub tidak menyajikan file "mentah" dengan header yang kedaluwarsa jauh di masa mendatang. Tanpa kemungkinan caching lintas situs, Anda kehilangan manfaat terbesar menggunakan CDN publik untuk menghosting JavaScript Anda. Faktanya, menggunakan GitHub sebagai CDN akan lebih lambat daripada hanya menghosting file di server Anda sendiri setelah permintaan pertama setiap pengguna untuk file tersebut (dengan asumsi Anda mengkonfigurasi caching dengan benar di server Anda).

Masalah lainnya adalah GitHub tidak menyajikan file "mentah" dengan header jenis konten yang cocok dengan jenis MIME file yang sebenarnya. Di IE9 (dan mungkin browser / proxy / firewall / dll lainnya), file JavaScript yang tidak disajikan dengan jenis konten yang benar diblokir secara default. Anda dapat melihatnya beraksi di halaman demo BlockUI, misalnya:

masukkan deskripsi gambar di sini

Dave Ward
sumber
10
Juga ... "Saat Anda meminta file mentah seperti itu, Anda tidak mengakses file dari sistem file secara langsung! Anda juga akan melewati lapisan kode aplikasi, yang pasti akan memperlambat situs Anda. Jangan lakukan itu . Sebagai gantinya, buat cabang gh-pages, dan muat dari sana "- viatropos.com/blog/github-as-a-cdn
Chris Jacob
RawGit menyajikan file mentah langsung dari GitHub dengan header Jenis Konten yang tepat. Gunakan tag tertentu atau lakukan hash di URL (bukan cabang). File di-cache secara permanen berdasarkan URL. rawgit.com
Kerem Baydoğan
11

Ini baru - baru ini ditanyakan di forum dukungan github , dan jawaban resminya adalah tidak apa-apa.

Karena itu, saya setuju dengan jawaban lain: github tidak pernah dimaksudkan sebagai CDN, sementara Google dan Microsoft memiliki infrastruktur khusus untuk itu.

Mauricio Scheffer
sumber
7
Untuk memperjelas. Tanggapan forum dukungan itu terkait dengan artikel yang saya tautkan di jawaban saya (Halaman GitHub sebagai CDN - bukan file "mentah" GitHub): stackoverflow.com/questions/5502540/… ).
Chris Jacob
10

Tidak masalah untuk pembuatan prototipe / barang pribadi, tetapi untuk produksi saya akan melihat:

http://www.cdnjs.com/

http://cachedcommons.org/ - tidak lagi tersedia

meleyal
sumber
Saya harap Anda tahu CachedCommons.com hanya melayani dari github.com
ocodo
Tetapi url tampaknya mengarah ke CachedCommons cachedcommons.org/cache/mootools/1.2.4/javascripts/mootools.js , bisa jadi proxy saya kira.
meleyal
Maaf yang saya maksud adalah info lama tentang penggunaan Github sebagai CDN sudah tidak berlaku lagi rupanya, dan semuanya baik-baik saja. Terlepas dari kemungkinan masalah ketersediaan di masa depan, ada baiknya membagi perpustakaan untuk menghindari hal ini.
ocodo
2
Tampak seperti menghubungkan ke Github akan segera tidak menjadi pilihan: github.com/blog/...
meleyal
1
Sebenarnya itu bukan masalah, jika Anda akan menggunakan sumber daya berbasis GitHub sebagai cdn, pastikan itu dihosting sebagai bagian dari situs halaman statis (sekarang GitHub.io) - Begitulah seharusnya Anda melakukannya di tempat pertama.
ocodo
-2

Saya melakukannya selama berbulan-bulan sekarang, memiliki beberapa kekhawatiran terlebih dahulu tetapi sangat keren jika Anda tidak memiliki masalah dengan file Anda yang tersedia untuk umum, gunakan versi yang diperkecil jika Anda peduli.

Tapi tetap saja - Google & MS menguasai ruang untuk jQuery & jQuery Templates - jadi saya menggunakannya untuk itu.

ezmilhouse.dll
sumber