Mengapa saya harus menggunakan CDN Google untuk jQuery?

169

Ini mungkin jelas bagi sebagian orang, tetapi saya bertanya-tanya: mengapa saya harus bergantung pada server Google untuk meng-host jQuery untuk situs saya?

Apakah hanya karena memuat lebih cepat dengan cara ini?

Yvette
sumber
1
Terkait: stackoverflow.com/questions/547384/…
Jørn Schou-Rode
2
Tidak ada yang menyebutkan apa kebijakan Google tentang hotlinking ke file JS mereka (diberikan hotlinking disukai), jadi inilah URL di mana Google menyebutkan ini OK dan lebih lanjut tentang perpustakaan yang mereka host: code.google.com/apis/ajaxlibs/ dokumentasi / index.html
Loftx
1
Banyak pengguna telah mengunduh jQuery dari Google atau Microsoft ketika mengunjungi situs lain. Akibatnya, itu akan diambil dari cache ketika mereka mengunjungi situs Anda, yang mengarah ke waktu pemuatan yang lebih cepat
AminM
Anda seharusnya tidak menggunakan Microsoft atau Google. Gunakan MaxCDN. Jauh lebih mungkin untuk mendapatkan cache hit, yang merupakan hal terpenting di sini blog.jquery.com/2014/01/14/…
0fnt

Jawaban:

393

Hal ini karena:

  1. Ini meningkatkan paralelisme yang tersedia.
    (Sebagian besar browser hanya akan mengunduh 3 atau 4 file pada satu waktu dari situs mana pun.)

  2. Ini meningkatkan kemungkinan akan ada cache-hit.
    (Karena lebih banyak situs mengikuti praktik ini, lebih banyak pengguna sudah memiliki file siap.)

  3. Ini memastikan bahwa payload akan sekecil mungkin.
    (Google dapat memampatkan file dalam beragam format (seperti GZIP atau DEFLATE). Ini membuat waktu untuk mengunduh sangat kecil, karena sangat dikompresi dan tidak dikompresi dengan cepat.)

  4. Ini mengurangi jumlah bandwidth yang digunakan oleh server Anda.
    (Google pada dasarnya menawarkan bandwidth gratis.)

  5. Ini memastikan bahwa pengguna akan mendapatkan respons yang dekat secara geografis.
    (Google memiliki server di seluruh dunia, semakin mengurangi latensi.)

  6. (Opsional) Mereka akan secara otomatis memperbarui skrip Anda.
    (Jika Anda suka "terbang di kursi celana Anda," Anda selalu dapat menggunakan versi terbaru dari skrip apa pun yang mereka tawarkan. Ini dapat memperbaiki lubang keamanan, tetapi umumnya hanya merusak barang-barang Anda.)
John Gietzen
sumber
10
Saya suka bagaimana Anda terus datang dengan alasan yang semakin banyak. +1 untuk itu saja.
Matchu
6. Server Google mungkin lebih cepat dari server Anda! Saya tidak yakin poin 3 benar-benar relevan karena siapa pun dapat meminimalkan seperti halnya google. +1 untuk jawaban yang bagus :)
Paul Creasey
1
Saya merasa seperti # 3 mungkin lebih berkaitan dengan gzip dan sejenisnya, karena jQuery sudah memberikan versi yang diperkecil.
Matchu
2
Tuhan semua orang menyerang saya, saya hanya mengirim ide-ide saya, dan diterima, LOL
Farshad
1
@ Farshad: Tidak menyerang Anda, menyerang jawaban yang diterima yang tidak sebagus jawaban berikutnya. Itulah cara Q&A komunitas bekerja. Cobalah memformat jawaban Anda sedikit lebih profesional di lain waktu, dan batasi kritik Anda terhadap pertanyaan yang bermanfaat dan konstruktif.
Joel
58

Ada beberapa skenario ketika Anda mungkin tidak ingin menggunakan jQuery dari CDN Google:

  1. Ketika Anda membangun aplikasi intranet di mana server web di-host di jaringan yang sama dengan klien. Jika Anda menggunakan jQuery CDN Google, Anda akan melakukan panggilan ke internet daripada server web di jaringan lokal. Ini meningkatkan bandwidth untuk organisasi Anda, dan lebih lambat.

  2. Saat Anda ingin menjalankan aplikasi secara offline . (Cukup ditautkan dengan masalah pertama) Jika Anda perlu bekerja di lingkungan pengembangan (dikelola misalnya dengan Bower ), Anda mungkin harus dapat membuat aplikasi Anda berfungsi tanpa koneksi internet (misalnya: di kereta :)

  3. Ketika Anda perlu menyesuaikannya . Misalnya jika Anda menggunakan Grunt untuk membangun perpustakaan agar hanya menggunakan modul tertentu atau mengatur nama AMD

  4. Saat Anda melayani halaman melalui SSL yang membutuhkan jQuery. Anda harus menayangkan JavaScript melalui SSL dan juga halaman Anda untuk menghindari masalah keamanan dan peringatan.

Juga, Microsoft host jQuery di CDN mereka. Itu adalah pilihan lain yang sebanding dengan menggunakan jQuery yang dihosting Google.

Lance Fisher
sumber
35
Hanya FYI yang dapat Anda gunakan server Google untuk menyajikan versi SSL dari perpustakaan javascript yang di-host. ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js berfungsi.
Aaron Wagner
Senang tahu, Aaron. Terima kasih.
Lance Fisher
3
+1 untuk menyebutkan Microsoft. Google mendapat cara terlalu banyak kredit imo.
Ya Barry
7
Juga FYI: Skema tautan relatif, seperti src="//ajax.googleapis.com/...", kerja.
John Gietzen
3
Dan juga pertimbangkan cndjs
Bryce
29

Studi ini oleh TJ VanToll meyakinkan saya bahwa lebih baik menggabungkan jQuery dengan skrip lain daripada memuatnya dari CDN.

Alasannya adalah latensi yang terlibat dalam mengambil jQuery di perangkat seluler:

"Pada tahun 2012 rata-rata waktu RTT pada jaringan seluler di Amerika Serikat adalah 344 ms. Dan 344 ms itu berlaku tidak hanya untuk setiap permintaan HTTP - yang mana rata-rata halaman web sekarang adalah 93 - tetapi juga setiap pencarian DNS dan koneksi TCP ... Sementara rata-rata RTT membaik, hanya ada sedikit keuntungan tambahan yang bisa didapat, karena jaringan saat ini berada dalam faktor kecil dari batas teoritis yang ditentukan oleh fisika. "

Dia juga mengutip posting ini dari Steve Souders yang menunjukkan mengapa Anda sebenarnya tidak mungkin mendapatkan manfaat caching dari menggunakan CDN:

"Karena fragmentasi dalam penyedia CDN, versi jQuery, dan penggunaan protokol (http vs. https), kemungkinan mendapatkan hit cache CDN sangat rendah - dan mengunduh dari domain eksternal berpotensi untuk melakukan bukan hanya satu, tetapi tiga pulang pergi (pencarian DNS, koneksi TCP, dan HTTP GET). "

cantera
sumber
3
Ini tidak lagi berlaku untuk HTTP2 dan SPDY. Hari ini Anda dapat meng-host semua sumber daya eksternal Anda dalam CDN seperti Cdnjs.com atau sesuatu dan semua file akan diunduh menggunakan permintaan yang sama. Thats dasarnya sama dengan concatenate.
Ricardo Polo Jaramillo
13

Manfaat terbesar adalah dari caching. Teorinya adalah bahwa jika pengunjung mengunjungi situs yang memuat pustaka JavaScript mereka, katakanlah jQuery misalnya dari Google CDN, maka ketika mereka mengunjungi situs web Anda, pustaka sudah ada dalam cache browser pengguna itu dan tidak perlu diunduh lagi . Ini terdengar hebat secara teori.

Manfaat yang dibagikan di sini dan di tempat lain semuanya teoretis. Baru saja menemukan analisis mendalam tentang menggunakan CDN dan jika memberikan manfaat kinerja yang diharapkan. http://www.root777.com/appdev/does-using-google-libraries-api-cdn-give-you-performance-benefits

Matt Moor
sumber
Jawaban ini terlalu diremehkan. Ini memberikan "kontra" yang sama validnya dengan jawaban "pro" yang diterima di atas.
Thomas Wana
@ user239558 Tautan tidak akan mati jika penulis studi benar-benar menggunakan CDN ;-) Kesalahannya adalah: [function.require]: gagal membuka streaming: Tidak ada file atau direktori di / homepages / 41 / d222999437 /htdocs/wp-content/themes/prose/functions.php
jplandrain
Artikel itu tidak dipikirkan dengan baik. Dikatakan bahwa lib jQuery yang paling umum dilayani oleh Google CDN pada sekitar 0,5% dari semua halaman. Selama sesi penelusuran umum, saya mengunjungi banyak halaman, terutama tautan kecil ke situs-situs seperti misalnya yang menyimpannya. Atau situs blog. Saya dengan mudah mengunjungi 30 situs unik sehari, setelah seminggu peluang untuk tidak di-cache cukup tipis. Meskipun mungkin tidak di-cache untuk semua pengguna Anda, orang-orang yang menggunakan internet secara ekstensif hampir selalu membuatnya di-cache, karena mereka mengunjungi jauh lebih dari 1 domain unik secara total.
Aidiakapi
8

Alasan utama TIDAK untuk membiarkan Google meng-host jQuery Anda, salah satu yang tidak dipikirkan banyak orang, adalah bahwa itu tidak akan diunduh jika Anda berada di China. Itu diblokir bersama dengan banyak skrip lain, font dll ... di-host oleh Google CDN. Jika Anda perlu menjangkau audiens Cina, Anda sebaiknya selalu menggunakan back-back yang di-host di server Anda sendiri. Google APIS Dicekal di Tiongkok

Joshua Maddox
sumber
Saya tidak setuju @tmthydvnprt. Pertanyaannya adalah pendapat, jadi di situlah sebagian besar kesalahan terjadi, tetapi ini menjawab pertanyaan itu.
Selamat tinggal StackExchange
1
Saya datang ke sini untuk hal yang sama. Jika pengguna di Cina, sebagian besar segalanya dari Google diblokir oleh firewall yang hebat. Padahal, ini mungkin bukan masalah karena banyak orang di China menggunakan layanan VPN, dan Anda mungkin tidak ingin menargetkan pasar Cina.
Justin
0

Beberapa jawaban yang bagus di sini adalah "Mengapa kamu harus ..." dan "Mengapa kamu tidak boleh ..."

Saya hanya ingin menambahkan daftar alternatif ke Google jika Anda ingin memuat jQuery dari CDN.

Tetapi untuk menyimpulkannya, Anda pada dasarnya meningkatkan kinerja situs web / aplikasi Anda secara keseluruhan.

EdwardM
sumber
0

Gunakan CDN dengan Pekerja Layanan, Anda dapat mengunduh CDN satu kali seumur hidup klien, dan tidak setiap kali Anda memperbarui kode.

Oscar Gardiazabal
sumber