Microsoft CDN untuk jQuery atau Google CDN? [Tutup]

187

Apakah penting CDN mana yang Anda gunakan untuk menautkan ke file jquery Anda atau file javascript apa pun dalam hal ini. Apakah yang satu berpotensi lebih cepat daripada yang lain? Faktor-faktor apa lagi yang bisa berperan dalam cdn yang Anda putuskan untuk digunakan? Saya tahu bahwa Microsoft, Yahoo, dan Google semuanya memiliki CDN sekarang.

Xaisoft
sumber

Jawaban:

151

Pembaruan berdasarkan komentar:

Versi singkat: Tidak masalah, tetapi mungkin tergantung pada host mereka. Mereka semua meng-host hal yang berbeda: Google tidak meng-host jQuery. Validasi, Microsoft tidak meng-host jQuery-UI, sejak 2016 mereka melakukannya !!, Microsoft menawarkan skrip mereka yang jika tidak akan dilayani melalui ScriptResource.axddan integrasi yang lebih mudah (misalnya ScriptManager dengan ASP. Net 4.0 ).

Catatan Penting: Jika Anda sedang membangun aplikasi intranet, menjauhlah dari pendekatan CDN. Tidak masalah siapa yang menghostingnya, kecuali jika Anda berada di server yang sangat kelebihan secara internal, tidak ada CDN yang akan memberi Anda kinerja lebih dari yang akan diberikan ethernet 100mb / 1GB lokal. Jika Anda menggunakan CDN untuk aplikasi internal yang ketat, Anda akan merusak kinerja . Atur header kedaluwarsa cache Anda dengan benar dan abaikan CDN yang ada dalam skenario khusus intranet.

Peluang untuk diblokir tampaknya hampir sama, hampir nol. Saya telah bekerja pada kontrak di mana ini tidak benar, tetapi tampaknya menjadi pengecualian. Juga, sejak posting asli jawaban ini, konteks di sekitarnya telah banyak berubah, Microsoft CDN telah membuat banyak kemajuan.

Proyek yang saya gunakan saat ini menggunakan kedua CDN yang paling cocok untuk solusi kami. Beberapa faktor berperan dalam hal ini. Pengguna dengan browser yang lebih lama mungkin masih membuat 2 permintaan simultan per domain seperti yang direkomendasikan oleh spesifikasi HTTP . Ini bukan masalah bagi siapa pun yang menjalankan sesuatu yang benar-benar baru yang mendukung pipelining (setiap browser saat ini), tetapi berdasarkan faktor lain kami juga merobohkan batasan ini, setidaknya sejauh javascript.

CDN Google yang kami gunakan untuk:

CDN Microsoft yang kami gunakan untuk:

Server kami:

  • Combined.js? V = 2.2.0.6190 (Major.Minor.Iteration.Changeset)

Karena bagian dari proses pembuatan kami menggabungkan dan memperkecil semua javascript khusus, kami melakukan ini melalui manajer skrip kustom yang menyertakan versi rilis atau debug (non-minified) dari skrip ini tergantung pada build. Karena Google tidak meng-host paket validasi jQuery, ini bisa menjadi sisi negatifnya. MVC termasuk / menggunakan ini dalam rilis 2.0 mereka, sehingga Anda dapat mengandalkan sepenuhnya pada CDN Microsoft untuk semua kebutuhan Anda, dan semuanya otomatis melalui ScriptManager .

Satu-satunya argumen lain yang akan dibuat adalah waktu DNS, ada biaya untuk ini dalam hal kecepatan memuat halaman. Rata-Rata: Hanya karena digunakan lebih banyak (sudah ada lebih lama) ajax.googleapis.comkemungkinan akan dikembalikan oleh DNS lebih cepat daripada ajax.microsoft.com, hanya karena server DNS lokal lebih mungkin untuk mendapatkan permintaan untuk itu (ini adalah pengguna pertama di area penalti) . Ini adalah hal yang sangat kecil dan hanya harus dipertimbangkan jika kinerja sangat penting, hingga sepersekian detik.
(Ya: Saya menyadari hal ini bertentangan dengan saya menggunakan kedua CDN, tetapi dalam kasus kami waktu DNS jauh dibayangi oleh waktu tunggu pada javascript / pemblokiran yang terjadi)

Terakhir, jika Anda belum melihatnya, salah satu alat terbaik di luar sana adalah Firebug , dan beberapa plug-in untuk itu: Page Speed dan YSlow . Jika Anda menggunakan CDN tetapi halaman Anda meminta gambar setiap kali karena tidak ada cache-header, Anda kehilangan buah yang menggantung rendah. Panel Net Firebug dapat dengan cepat memberi Anda waktu buka halaman yang cepat, dan Page Speed ​​/ YSlow dapat menawarkan beberapa saran bagus untuk membantu.

Nick Craver
sumber
26
Lebih kecil kemungkinan untuk diblokir? Saya ingin tahu bagaimana Anda menghasilkan ide itu. Jaringan MS bukan MS, itu adalah akamai yang telah melakukan load server seimbang lebih lama dari google, yang membuat omong kosong dari "sistem penjatuhan yang lebih baik" juga. Sungguh, jika Anda akan membuat klaim seperti ini beberapa bukti akan menyenangkan.
blowdart
16
Beberapa perusahaan, dan saya telah bekerja untuk beberapa, memblokir * .microsoft.com secara langsung sebagai bagian dari pemblokiran pembaruan windows mereka. Apakah ini benar? Tidak, apakah itu terjadi? Iya. Contoh: ajax.microsoft.com/...it berada di bawah blok * .microsoft.com dan tidak di bawah pengecualian www, itu diblokir ketika perusahaan memilih untuk memblokir apa pun selain www.microsoft.com. Saya tidak mengatakan itu sangat mungkin, saya mengatakan itu lebih mungkin, karena saya belum pernah melihat google diblokir tetapi melihat sebaliknya.
Nick Craver
5
Dan saya telah melihat google diblokir untuk menghentikan gmail di situs pemerintah. Tetapi karena sangat jarang, saya tidak akan berusaha menggunakannya sebagai pembenaran dalam kasus ini.
blowdart
19
Sejak ini ditulis, MS telah menambahkan jQuery-UI ke CDN mereka: asp.net/ajaxlibrary/cdn.ashx#Using_jQuery_UI_from_the_CDN_10
Will Dean
3
@Nick Microsoft telah memindahkan CDN-nya dari ajax.microsoft.com ke ajax.aspnetcdn.com. Jadi tidak ada peluang untuk memblokir CDN Microsoft sebagai bagian dari pemblokiran Pembaruan Windows.
Sachin Joseph
88

Anda harus benar-benar menggunakan CDN Google untuk jQuery (dan ini berasal dari pengembang Microsoft-sentris).

Ini statistik sederhana. Mereka yang akan mempertimbangkan menggunakan MS CDN untuk jQuery akan selalu menjadi minoritas. Ada terlalu banyak pengembang non-MS yang menggunakan jQuery yang akan menggunakan Google dan tidak akan mempertimbangkan untuk menggunakan Microsoft. Karena salah satu kemenangan besar dengan CDN publik adalah peningkatan caching , pemisahan penggunaan di antara banyak CDN mengurangi potensi manfaat itu.

Dave Ward
sumber
7
jika kita terus berpikir seperti itu maka hanya lebih besar yang akan bernafas. Jangan hanya menggunakan google karena google dan anggap semua orang ada bersama mereka (tidak diragukan lagi kebanyakan dari mereka). Tetapi biarkan yang terbaik menang, bandingkan hasil dan pergi bersama mereka.
mamu
20
Itu bukan asumsi. Situs di Alexa teratas 200.000 menggunakan CDN Google melebihi jumlah Microsoft lebih dari 100: 1. Dalam hal popularitas untuk caching, satu-satunya poin yang mendukung MS jQuery CDN adalah bahwa Microsoft.com menggunakannya, yang memberikannya banyak paparan dari satu referensi saja (tetapi tidak sebanyak ribuan situs teratas yang merujuk Google ).
Dave Ward
@ DaveWard, dapatkah Anda memverifikasi ini masih menjadi masalahnya, atau apakah tabelnya telah berubah selama beberapa tahun terakhir?
snumpy
3
@snumpy: Google CDN telah sedikit memimpin dari apa yang saya lihat. Tidak ada yang salah dengan CDN Microsoft. Ini cepat dan memiliki beberapa file yang tidak dimiliki Google. Manfaat caching lintas situs tergantung pada cakupan net-wide, dan Google mendominasi semua yang lain dalam hal itu.
Dave Ward
Karena saya telah beralih dari jQuery CDN ke Microeoft's untuk hosting jQuery Mobile, saya memindahkan unduhan jQuery saya yang lain ke Google dari Google untuk mengurangi jumlah pulang-pergi DNS. Just another factor :)
Rob Grant
20

Google akan mengirimkan kepada Anda versi jQuery yang diperkecil dengan perangkat lunak mereka sendiri, versi ini 6kb lebih ringan dari versi standar yang diperkecil yang dilayani oleh MS. Pergi untuk Google.

Oscar Kilhed
sumber
18

Satu hal kecil yang perlu dipertimbangkan adalah bahwa kedua perusahaan menawarkan perpustakaan "ekstra" yang sedikit berbeda:

Tergantung pada kebutuhan Anda, ini mungkin relevan.

dp.
sumber
23
Sejak ini ditulis, MS telah menambahkan jQuery-UI ke CDN mereka: asp.net/ajaxlibrary/cdn.ashx#Using_jQuery_UI_from_the_CDN_10
Will Dean
15

Juga harus dicatat bahwa ajax.microsoft.com adalah sub domain permintaan microsoft.com, kirim semua cookie microsoft.com, menambah waktu keseluruhan yang diperlukan untuk mendapatkan file kembali.

Juga, ajax.microsoft.com menggunakan kompresi IIS7 default yang lebih rendah daripada kompresi standar yang digunakan server web lain.

http://ajax.microsoft.com/ajax/jquery/jquery-1.4.4.min.js - 33.4K

http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js - 26.5K

Juga, seperti yang disebutkan orang lain google CDN jauh lebih populer yang sangat meningkatkan peluang file di-cache.

Jadi saya sangat merekomendasikan menggunakan google.

Alistair
sumber
3
Ini adalah keberatan yang baik pada saat itu, tetapi tidak lagi berlaku karena nama domain CDN yang disarankan sekarang ajax.aspnetcdn.com. Pemblokiran keberatan * .microsoft.com juga tidak berlaku lagi.
Stephen Kennedy
ini benar. senang mereka akhirnya memperbaiki bagian ini. Sekarang saya tidak merasa sedih untuk memasukkan jquery validate / cycle plugin dari ms cdn.
Alistair
Hal cookie juga tidak berlaku lagi karena beralih ke aspnetcdn.
Rob Grant
11

Mungkin tidak masalah, tetapi Anda dapat memvalidasi ini dengan beberapa pengujian A / B. Kirim setengah dari lalu lintas Anda ke satu CDN, dan setengah ke yang lain, dan atur beberapa profil untuk mengukur respons. Saya akan berpikir lebih penting untuk dapat beralih dengan mudah jika salah satu dari mereka memiliki masalah ketidaktersediaan yang serius.

penginapan3n
sumber
7

Saya tahu saya sedikit terlambat di sini, tapi ini kode yang saya gunakan dalam produksi. Saya tidak pernah memiliki masalah dengan itu, tetapi jarak tempuh Anda dapat bervariasi. Pastikan Anda mengujinya di lingkungan Anda sendiri.

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" type="text/javascript"></script>    
<script type="text/javascript">
    !window.jQuery && document.write('<script src="/scripts/jquery-1.4.2.min.js"><\/script>')
</script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.4/jquery-ui.min.js" type="text/javascript"></script>
<script type="text/javascript">
    !window.jQuery.ui && document.write('<script src="/scripts/jquery-ui-1.8.2.min.js"><\/script>')
</script> 
Jeremy Cade
sumber
1
Sayangnya beberapa browser (IE6) tidak akan menunda pemrosesan skrip online itu sampai setelah skrip src = dimuat sehingga ini tidak akan berfungsi seperti yang diharapkan. Semoga saja!
Walden Leverich
2
Jadi, pengguna IE6 Anda mengalami pengalaman yang sedikit lambat. Pertukaran yang bagus jika Anda bertanya kepada saya. IE6 sedang menurun ... bahkan di intranet Korporat.
Armstrongest
7

Ini tentang statistik: jquery.com memuat jQuery dari Google. Demikian juga Twitter, Stackoverflow dan banyak lainnya. Jadi, ada kemungkinan yang cukup tinggi bahwa pengguna situs web Anda telah menyimpannya di cache = tidak ada unduhan sama sekali .

Lupakan validator, bandwidth dan kecepatan karena ini adalah manfaat utama. Jika tidak, opsi CDN lainnya pada dasarnya akan bekerja pada level yang sama.

achairapart
sumber
1
Ya, tapi Twitter (menurut Dave Ward's encosia.com/2010/09/15/... ) menggunakan jQuery 1.3.0 (di Twitter "lama") sehingga mereka tidak terlalu penting ... namun ...
veggerby
Yah, situs yang saya lakukan beberapa waktu lalu masih menggunakan jQuery 1.3.0, seperti Twitter (lama). Itu selalu penting.
achairapart
6

Apakah yang satu berpotensi lebih cepat daripada yang lain?

Saya sebenarnya ingin tahu tentang hal ini sendiri jadi saya menyiapkan halaman uji jsbin menggunakan masing-masing berikut ini dan kemudian menjalankannya melalui alat perbandingan visual webpagetest.org. Saya menguji:

  1. ajax.googleapis.com
  2. code.jquery.com
  3. ajax.aspnetcdn.com
  4. cdnjs.cloudflare.com

Siapa yang tercepat: code.jquery.com dengan 0,1 detik di kedua tes

Siapa yang paling lambat: ajax.aspnetcdn.com sebesar 0,7 detik di tes pertama dan ajax.googleapis.com oleh 1 detik di tes kedua

Inilah tes pertama (masing-masing diuji 3 kali):

Video: http://www.webpagetest.org/video/view.php?id=121019_16c5e25eff2937f63cc1714ed1eac814794e62b3

Laporan: http://www.webpagetest.org/video/compare.php?tests=121019_D2_KF0,121019_9Q_KF1,121019_WW_KF2,121019_9K_KF3

Inilah tes kedua (masing-masing 3 lainnya):

Video: http://www.webpagetest.org/video/view.php?id=121019_a7b351f706cad2c25664fee7ef349371f17c4e74

Laporan: http://www.webpagetest.org/video/compare.php?tests=121019_MP_KJN,121019_S6_KJP,121019_V9_KJQ,121019_VY_KJRR

Anthony Hatzopoulos
sumber
4

Seperti yang dikatakan oleh Pingdom :

Ketika seseorang mengunjungi situs Anda, jika mereka telah mengunjungi situs lain yang menggunakan file jQuery yang sama pada CDN yang sama, file tersebut akan di-cache dan tidak perlu diunduh sama sekali. Itu tidak bisa lebih cepat dari itu.

Ini berarti bahwa CDN yang paling banyak digunakan akan memiliki peluang di sisinya, yang dapat membayar untuk situs Anda.

Beberapa pengamatan tentang kinerja: CDN Google secara konsisten paling lambat dari ketiganya di Amerika Utara dan Eropa. Di Eropa, Microsoft CDN adalah yang tercepat.

mayank
sumber
3

Saya pikir itu tergantung di mana audiens yang Anda targetkan. Anda dapat menggunakan alertra.com untuk memeriksa kecepatan CDN dari banyak lokasi di seluruh dunia.

diam
sumber
Ini tidak memberikan jawaban untuk pertanyaan itu. Untuk mengkritik atau meminta klarifikasi dari penulis, tinggalkan komentar di bawah posting mereka.
Fiona - myaccessible.website
1
Bagi Fiona, itu adalah jawabanku untuk pertanyaan itu. Pertanyaannya adalah "apakah itu penting", jawaban saya adalah "itu tergantung di mana audiens targetnya berada", dan saya memberikan situs untuk menguji kecepatan dari berbagai tempat di seluruh dunia untuk membiarkan dia memutuskan CDN mana yang akan digunakan. Ini bukan komentar, itu adalah jawaban.
sunyi
3

Satu pertimbangan tambahan - jika situs Anda adalah SSL dan Anda perlu mendukung Android 2.1 (atau lebih awal), sertifikat SSL pada versi HTTPS dari Microsoft CDN akan membuat crash versi browser Android tersebut, sesuai dengan masalah ini: http: // code .google.com / p / android / issues / detail? id = 5001 . Ini bukan "kesalahan" Microsoft, karena sertifikat SSL secara teknis valid dan cacatnya ada dalam implementasi SSL Android ... tetapi itu akan merusak situs Anda, toh.

Sertifikat SSL pada CDN Google tidak bertentangan dengan masalah khusus ini (terkait dengan "Nama Alt Subjek Sertifikat" sertifikat).

Jadi, untuk dukungan SSL + Android 2.1, gunakan Google CDN.

Kent McNeill
sumber
2

Jawaban saya agak berbeda dari yang lain, saya akan menggunakan microsoft jika Anda memerlukan validator jquery yang hampir semua orang butuhkan jika Anda menggunakan jquery.

Koneksi Microsoft CDN http adalah Keep-Alive yang besar plus ketika Anda meminta beberapa item.

Jadi jika Anda memerlukan validasi jquery maka gunakan Microsoft CDN, bahkan jika Anda perlu jquery ui gunakan microsoft karena google tidak menyimpan keep-live sehingga setiap permintaan ada di dalamnya sendiri. jadi pencampuran dengan cara itu adalah plus. jika Anda menggunakan microsoft hanya untuk validator maka Anda melakukan koneksi terpisah dengan server google untuk setiap permintaan.

mamu
sumber
1

Dalam musim panas dikatakan bahwa microsoft tidak menawarkan UI, itu tidak benar (lagi). Ini dapat diunduhload di http://www.asp.net/ajaxlibrary/cdn.ashx .

Netsi1964
sumber
1

Juga pertimbangkan ketika menggunakan CDN Google yang beberapa kali orang membuat kesalahan ketik seperti ajax.googelapis.com. Ini berpotensi membuat serangan xss (cross site scripting) yang benar-benar jahat. Saya sebenarnya telah menguji ini dengan mendaftarkan salah ketik googlapis.com dan sangat cepat menemukan diri saya melayani permintaan untuk javascript, peta, css dll.

Saya mengirim email ke Google dan meminta mereka untuk mendaftarkan URL typo CDN yang serupa tetapi belum mendapat tanggapan. Ini bisa menjadi alasan nyata untuk tidak mengandalkan CDN karena ada penyerang berbahaya yang menunggu permintaan kesalahan ketik dan dapat dengan mudah melayani kembali jquery dll dengan muatan xss.

Terima kasih


sumber
1
mungkin sedikit dari topik, tapi poin yang menarik.
achairapart
1

Tergantung industri mana yang menjadi target aplikasi, Anda mungkin tidak ingin menggunakan CDN yang dikelola oleh organisasi lain. Ini sering menimbulkan masalah terkait kepatuhan, privasi, dan kerahasiaan.

Misalnya, ketika Anda memasukkan Google Analytics dalam aplikasi yang aman, browser masih mengirimkan URL saat ini sebagai header "referer". Setiap pengidentifikasi, katakan id sesi atau token rahasia dapat muncul di log mereka. Misalnya, jika IP klien 192.0.2.5referensi https: //healthsystem.example/condition/impotence , maka well, Anda dapat menyimpulkan informasi yang dianggap agak pribadi.

Kasus lain termasuk informasi konsekuensi, seperti nomor akun, nomor jaminan sosial atau informasi sesi di URL. Data semacam itu tidak boleh ada di URL karena dapat digunakan di luar aplikasi.

Meskipun Anda dapat mempercayai Google, Microsoft atau Yahoo, pengguna Anda mungkin tidak.

Untuk industri seperti Keuangan, Hukum dan Perawatan Kesehatan, Anda mungkin ingin membuat CDN sendiri dengan bantuan vendor (misalnya Akamai) yang dengannya Anda dapat menandatangani BAA.

bloudraak
sumber
1

Saya akan menyarankan agar Anda mendasarkan penggunaan Anda pada lokasi umum dari pengguna yang Anda targetkan.

Jika situs Anda ditargetkan untuk masyarakat umum, maka menggunakan CDN Google akan menjadi pilihan yang baik.

Jika situs Anda juga ditargetkan di China, maka menggunakan CDN Microsoft akan menjadi pilihan yang lebih baik. Saya tahu dari pengalaman saya, karena server Google terus diblokir oleh pemerintah Cina, membuat situs web yang menggunakannya tidak dapat dimuat.

* Perhatikan bahwa Anda dapat membuat situs khusus kawasan, mis. Cn.mysite.com untuk melayani secara khusus untuk China, tetapi jika Anda kekurangan sumber daya dan waktu, patut dipertimbangkan.

Daftar lengkap Microsoft CDN di sini. http://www.asp.net/ajaxlibrary/cdn.ashx

Sejak itu mereka berganti nama menjadi ajax.aspnetcdn.com , yang mengurangi kemungkinan penyumbatan oleh aturan firewall.

KnaveT
sumber
-3

Saya akan menggunakan keduanya!

Karena hosting Google Jquery telah ada jauh lebih lama, kemungkinannya jauh lebih tinggi bahwa orang-orang sudah akan memiliki cache dibandingkan dengan yang Microsoft, jadi saya akan memilikinya terlebih dahulu.

Secara pribadi, saya akan menggunakan sesuatu seperti ini -

if (typeof jQuery == 'undefined') {  
    // jQuery is not loaded  

  document.write("<scr" + "ipt type=\"text/javascript\" src=\"http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js\"></scr" + "ipt>");
        }
} else {
    // jQuery is loaded
}

(Tidak yakin ini 100% berfungsi, tapi saya hanya akan menulis ide dan bukan contoh - Ini referensi Google host Jquery dan bukan yang Microsoft karena saya tidak dapat menemukan tautan)

Wil
sumber
6
jQuery tidak akan pernah ditentukan kecuali Anda membawanya ke halaman Anda. Caching file .js doe snot membuatnya tersedia untuk semua halaman browser secara default!
Falkayn
1
Ini berfungsi: S Re membaca skrip - jika tidak ditentukan, ia menulis ini dan memuat?
Wil
12
Saya tidak pernah mengerti mengapa orang melakukan "<scr" + "ipt ..."
pengecut anonim
3
"Bergantung pada browser, jumlah javascript sebelumnya, dan seberapa baik kode keseluruhan terbentuk, hal ini dilakukan untuk mencegah parser dari menafsirkan tag <script> dan </script> sebagai kode yang dapat dieksekusi daripada sebagai string untuk ditulis. "
SeanJA
2
Masalahnya adalah bahwa jQuerytidak akan pernah ditentukan kecuali Anda telah secara aktif memuatnya. Dalam skrip Anda, cabang pertama akan selalu dieksekusi (kecuali jika Anda memiliki penyertaan jQuery lain di atas), menjadikan skrip menjadi berlebihan.
jensgram