Perpustakaan yang diinangi Google jQuery - apakah ada gunanya?

14

Apakah ada manfaat nyata NYATA menggunakan perpustakaan yang di-host Google jQuery? Atau haruskah kita mengunduhnya ke server kita?

Apa pendapat Anda tentang hal ini?

Leo
sumber
1
Pencarian google sederhana akan memberikan jawabannya ...
Francisco Presencia

Jawaban:

18

Ada dua manfaat utama untuk menggunakan CDN eksternal seperti Google untuk meng-host jQuery:

  1. Lebih cepat. Ini pasti akan lebih cepat dari situs Anda, dan mungkin lebih cepat daripada CDN yang Anda buat sendiri.
  2. Mungkin sudah di-cache . Banyak situs referensi jQuery di CDN Google juga, jadi jika mereka mengunjungi situs lain sebelum Anda, mereka bahkan tidak perlu mengunduhnya.

Kerugian potensial:

  1. The domain dapat diblokir (hal ini sangat umum di tempat-tempat seperti Cina). Anda dapat menyelesaikan ini dengan memiliki fallback lokal ( lihat di sini untuk caranya ).
  2. The fragmentasi dari nomor versi cukup tinggi, sehingga pengunjung ke situs Anda mungkin memiliki banyak versi yang berbeda cache, tapi bukan yang Anda direferensikan ( lihat di sini untuk beberapa statistik baru-baru ini ). Ini hanya masalah pada pemuatan halaman pertama.
DisgruntledGoat
sumber
3
Bisakah Anda memposting referensi tentang cara mengatur fallback lokal?
Stephen Ostermiller
1
Seperti yang ditunjukkan Zistolen sebelumnya, manfaat lainnya adalah ia akan mengunduh secara paralel ke situs web Anda aset lainnya. Anda mungkin ingin menambahkan itu juga ke jawaban yang bagus ini.
nathangiesbrecht
Itu sedikit menyesatkan. Browser mengunduh aset secara paralel di mana pun mereka di-host, tetapi ada batasan jumlah hal yang akan mereka unduh dari host yang sama sekaligus.
Tim Fountain
Saya melewatkan bahwa sejujurnya itu tidak penting - file dapat diunduh secara paralel tetapi juga merupakan pencarian DNS tambahan. Plus, perbedaan waktu apa pun yang dibuat keduanya dapat diabaikan.
DisgruntledGoat
Cukup adil. Tetapi pada koneksi cepat, tidak bisakah menghasilkan total waktu muat yang lebih cepat, karena lebih banyak "pipa" dapat digunakan?
nathangiesbrecht
11

Kelemahan lain:

Menggunakan CDN memungkinkan operator CDN untuk melacak situs pengunjung. Itu sebabnya mereka tidak memerlukan biaya.

Jost
sumber
Pelacakan pasti, tetapi tidak untuk pengunjung: baik jquery sendiri maupun google jquery CDN di-host di domain yang tidak menetapkan atau menggunakan cookie (ini mungkin juga merupakan optimasi kinerja), dan tidak ada informasi yang benar-benar dapat diidentifikasi dalam permintaan. Penyedia CDN bisa mendapatkan ide tentang alamat IP dan beberapa statistik pada string dan referensi agen pengguna. Ini mungkin berharga, tetapi ini tidak dengan sendirinya merupakan risiko privasi yang besar (jika catatan ini berkorelasi dengan basis data lain - misalnya iklan yang dipersonalisasi ditayangkan pada waktu yang sama - maka mungkin ini bisa menjadi alat pelacakan).
Eamon Nerbonne
Saya pikir itu bisa diterima begitu saja (dalam kasus google), bahwa data berkorelasi dengan database lain, karena hampir semua orang menggunakan google untuk mencari sepanjang waktu. Hal yang sama dengan font google: Saya baru-baru ini mencoba meng-host font sendiri di server, tetapi ternyata sangat sulit untuk melakukannya. Google tidak melarangnya (Open Source), tetapi mereka tidak memberi Anda file dengan cara yang siap digunakan: Anda dapat mengompilasinya sendiri (tetapi tidak ada makefile), atau Anda dapat memalsukan permintaan ke server yang digunakan untuk mengirimkannya secara normal. Keduanya tidak bisa dilakukan untuk non-techie.
Jost
Mungkin. Saya tidak memiliki informasi orang dalam, jadi sulit untuk mengatakannya dengan pasti. Saya yakin ini akan menjadi buggy dan memiliki kesenjangan yang signifikan, namun: Sebagian besar tempat saya menggunakan internet adalah NATed, dan beberapa memiliki beberapa pengguna dengan mesin yang sama (kemungkinan string UA identik) - tidak mungkin untuk mengetahui permintaan datang dari siapa. Dan tentu saja apa dengan tombol adsense dan berbagi sosial, mereka mungkin memiliki cara yang lebih dapat diandalkan hampir selalu, jadi saya bisa membayangkan mereka tidak mengganggu. Adapun font - saya sudah mengunduh beberapa kali, jadi saya tidak mengerti apa yang Anda maksud dengan ini sulit?
Eamon Nerbonne
Untuk lebih jelasnya: Saya berasumsi bahwa sebagian besar kunjungan situs web yang Anda buat dapat dan akan dilacak oleh para pengumpul statistik besar berdasarkan tombol berbagi sosial (cukup menyebar) dan iklan, yang hampir ada di mana-mana. Jadi saya hanya ingin tahu betapa berharganya info yang menyesatkan dari permintaan js yang sangat di-cache - saya bertaruh, tidak terlalu, karena itu saya menganggap mereka tidak repot-repot mencoba mengidentifikasi secara pribadi orang-orang menggunakan JS yang dilayani CDN.
Eamon Nerbonne
Ini tidak di-cache seperti yang dipikirkan orang - Ketika menanamkan font menggunakan cara google lebih suka dengan memasukkan tautan CSS ke fonts.googleapis.com, setiap tampilan halaman membuka koneksi ke google (Anda dapat melihatnya di Firebug). Tidak masalah jika di-cache atau tidak. Mengenai pengunduhan: Dapatkah Anda mengarahkan saya ke tempat di mana saya dapat mengunduh font dalam format eot, woff, ttf, dan svg berkualitas tinggi (versi yang sama dengan Google, tanpa konverter eksternal)?
Jost
3

Menggunakan CDN untuk membagikan dependensi Anda di banyak server seperti ini pada dasarnya merupakan pertukaran antara bandwidth dan latensi, dengan asumsi Anda hanya peduli dengan kinerja.

Secara kebetulan saya berasumsi bahwa alternatifnya bukan hanya meng-hosting-nya secara lokal, tetapi menggabungkannya dengan permintaan lokal yang berbeda - biasanya tidak ada alasan kuat untuk tidak menggabungkannya ketika Anda bisa.

Jika bandwidth tak terbatas, maka Anda lebih baik BUKAN sharding, karena Anda akan selambat layanan paling lambat - karena latensi tidak dapat diprediksi dengan sempurna, dengan layanan yang cukup, bahkan jika cepat, Anda hanya perlu sedikit nasib buruk menyebabkan loading halaman lambat.

Jika latensi 0, maka menyebarkan beban Anda ke banyak server dapat meningkatkan bandwidth dengan memanfaatkan banyak server (tidak terlalu membantu karena kemungkinan keterbatasan bandwidth dekat dengan klien, bukan server), tetapi yang lebih penting, ini dapat mengurangi jumlah data yang dikirimkan sedikit dengan meningkatkan efektivitas caching.

Itu tergantung pada skenario Anda, tetapi saya biasanya mengharapkan latensi lebih dari masalah bandwidth, kecuali skrip Anda sangat besar (yang jquery tidak). Pada titik itu, biasanya lebih cepat meng-host jquery sebagai bagian dari file lokal gabungan.

Alasan untuk tidak meng-host secara lokal adalah misalnya ketika Anda membayar bandwidth, atau Anda hosting di beberapa server lambat (koneksi Anda ke klien macet di pihak Anda, bukan klien), atau Anda tahu klien Anda akan memiliki bandwidth yang sangat rendah (dsl atau modem, low-end, katakanlah - seluler cenderung memiliki masalah latensi lebih banyak daripada masalah bandwidth), atau klien Anda membayar bandwidth (mis. seluler) dan skrip adalah bagian yang sedemikian mencolok sehingga caching menang menjadi masalah (tidak mungkin ).

Dalam kasus apa pun: jauh lebih relevan adalah apakah Anda sudah membahas dasar-dasarnya terlebih dahulu; header caching yang tepat, concatenation, minification, dan gzipping (lebih disukai dengan rasio kompresi yang tinggi). Dan inilah intinya: jika Anda TIDAK melakukan itu, maka setidaknya CDN akan melakukannya, jadi itu menang ...

TL; DR: Jika Anda telah meringkas + minifikasi + gzipping + caching semua dibahas, maka melayani skrip kecil secara lokal lebih cepat daripada dari CDN meskipun kinerja CDN lebih baik - tetapi hanya jika Anda telah melakukan pekerjaan rumah Anda, mungkin tidak pada pekerjaan rumah Anda, mungkin tidak pada halaman pertama memuat, dan pasti ada pengecualian untuk aturan ini.

Eamon Nerbonne
sumber
Kebetulan, ada beberapa byte-serutan dimenangkan dengan menggunakan hanya satu permintaan: header saja berjumlah hampir 1 kb, yang pada muatan 28k bukan apa-apa. gzip berfungsi lebih baik dengan lebih banyak konteks, yang menghemat 0,5k. Overhead TCP, DNS, HTTPS dapat dengan mudah menambahkan KB di sini atau di sana, dan lebih buruk lagi, RTT. Itu sebabnya untuk file kecil seperti ini CDN tidak secepat yang Anda kira.
Eamon Nerbonne
1

Menggunakan perpustakaan yang di-host jQuery oleh Google memungkinkan laman Anda dimuat lebih cepat. Memang, perpustakaan dimuat pada saat yang sama halaman Anda, bukan setelah.

Zistoloen
sumber
Tetapi bagaimana pengaruhnya terhadap pemuatan halaman?
Leo
1
Perpustakaan lokal juga dimuat saat halaman dimuat - Dalam kedua kasus, pengunduhan aset dimulai ketika browser (modern) melihat potongan kode yang memicu pengunduhan, yang biasanya terjadi sebelum seluruh dokumen diunduh. Lihat screenshot Firebug ini sebagai contoh
Jost