File lokal vs. CDN

13

Jika waktu buka situs web menjadi perhatian, yang umumnya lebih baik digunakan saat mereferensikan file JavaScript atau CSS? Apakah menggunakan CDN lebih baik atau hanya menambah permintaan HTTP?

Omar A.
sumber

Jawaban:

11

CDN harus digunakan untuk semua file statis (.css / .js / images).

Namun kadang-kadang file javascript atau css dapat memiliki aspek dinamis untuk mereka seperti itu akan mencakup string pengguna yang unik atau semacamnya. Dalam situasi ini server CDN harus menghubungi server asal pada setiap permintaan yang akan mengalahkan tujuan.

Jika CSS dan Javascript Anda statis untuk semua pengguna, maka menggunakan CDN adalah cara yang tepat. Ini tidak akan menyebabkan permintaan HTTP tambahan karena hanya akan memuat file css dan js dari CDN, bukan server web Anda sendiri (kecuali jika Anda menggunakan kode inline). Jadi, alih-alih peramban pengguna yang memuat permintaan ini dari server Anda, mereka akan dimuat melalui CDN, tidak ada permintaan tambahan Anda hanya mengubah ke mana harus mengirim permintaan ini (lagi-lagi selama Anda saat ini tidak menggunakan kode sebaris).

Manfaat lain dari menggunakan CDN adalah bahwa server CDN kemungkinan besar terletak lebih dekat dengan pengguna akhir Anda dan asal Anda yang akan menguntungkan waktu pemuatan. Server-server CDN juga kemungkinan diatur untuk menyajikan konten statis lebih cepat daripada server asal Anda dengan secara khusus melayani server web untuk konten statis.

Analog
sumber
2
Jika CDN tidak lebih dekat dan tidak menggunakan edns-client-subnet, itu tidak akan meningkatkan kinerja sama sekali. Ini bukan "manfaat lain", karena lebih dekat dengan klien, mungkin memberikan perlindungan DOS / optimasi konten (meskipun Anda tidak menyebutkan ini) adalah satu - satunya manfaat.
symcbean
Manfaat utama menggunakan CDN adalah kenyataan bahwa kemungkinan besar pengguna sudah mengunjungi situs web yang menggunakan CDN yang sama dan browser sudah menyimpannya, jadi ketika pengguna membuka situs web Anda, browser tidak akan mengirim permintaan apa pun.
Offir Pe'er
3

Menggunakan CDN vs web hosting tradisional untuk mengirimkan file statis Anda seperti CSS, JS, dan gambar biasanya lebih disukai. Ini karena begitu file Anda di-cache di server tepi CDN, pengunjung situs Anda akan dikirimkan konten statis dari titik terdekat (PoP) bukan server asal.

Dalam sebagian besar kasus, ini mempersingkat jarak antara klien dan server dan dengan demikian membantu meningkatkan waktu pemuatan tanpa menambahkan permintaan HTTP tambahan. Ini juga membantu di area lain seperti meningkatkan redundansi, melepas muatan dari sumber, dll.

CodyA
sumber
2

Gunakan CDN jika Anda membutuhkan CDN. Jika pengguna Anda bersifat global dan tersebar di wilayah yang luas, atau Anda memiliki banyak konten yang tidak ingin Anda simpan di server Anda sendiri, saat itulah CDN berguna. Secara global, ini dapat mempercepat akses ke konten Anda jika server lebih dekat dengan pengguna. Jika Anda memiliki banyak GB atau Terabytes data statis dan beban berat untuk mengakses konten itu, CDN dapat membantu dengan itu.

Namun, situs kecil, lokal, atau situs yang sedikit dimuat jarang membutuhkan hal-hal seperti itu dan CDN hanya dapat menambah satu lagi komplikasi pada pengaturan, operasi, dan alur kerja Anda, seperti masalah caching.

Terlalu sering saya melihat orang menggunakan CDN karena mereka membaca mereka harus menggunakan satu dan tidak ada alasan lain.

rampok
sumber
Terima kasih telah menunjukkan itu tidak selalu diperlukan dan memang menambah komplikasi yang tidak perlu. Dalam kasus saya, saya menggunakan cms berbasis laravel dengan penggabung aset backend dan cache file yang diperkecil yang mengatur cdn S3, tegukan dan vc pada beberapa file js adalah buang-buang waktu. Saya lebih suka fokus pada caching DB dan kode yang tepat untuk kecepatan
Raja Khoury
1

Menggunakan CDN dapat menjadi beban dan manfaat bagi situs web, semua tergantung pada bagaimana hal itu diterapkan.

Poin Positif

  1. Konten statis disimpan lebih dekat ke pengguna akhir (waktu pemuatan lebih cepat)
  2. Sub-domain tambahan ( cdn1.example.com,, cdn2.example.comdll), ini membantu dengan batas yang melekat di browser tempat mereka membatasi unduhan file ke dua file simultan dari nama domain yang sepenuhnya memenuhi syarat pada satu waktu. Dengan kata lain menggunakan contoh ini Anda akan mengakses HTML dari www.example.comdan sambil mengunduh 2 file dari cdn1.example.com, 2 file dari cdn2.example.com, dan 2 file dari cdn3.example.comdengan ketiga domain CDN mengakses satu layanan dan sumber CDN.
Chris Rutherfurd
sumber
Bisakah Anda memberikan referensi dari mana "2 file simultan per domain" berasal? Tentunya per browser. Juga dengan munculnya HTTP / 2, Domain sharding menjadi masalah yang bisa diperdebatkan.
Patrick Mevzek
0

Hosting di CDN memiliki banyak kelemahan:

  1. Pribadi. Setiap kali Anda mengunjungi situs yang meng-host skrip / stylesheet / font pada CDN, CDN tahu tentang Anda mengunjungi situs tersebut.
  2. Waktu offline. Dalam minggu-minggu terakhir cloudflare dll punya beberapa jam, di mana waktu loading mereka sangat lambat atau bahkan offline selama beberapa menit. Dalam kasus terbaik situs Anda terlihat jelek, ketika itu terjadi, dalam keadaan terburuk itu sama sekali tidak dapat digunakan dalam waktu, di mana pesaing Anda memiliki masalah juga, dan Anda bisa mendapatkan pelanggan dari mereka jika situs Anda online dan mereka tidak.
  3. Keamanan. CDN dapat dikompromikan (itu terjadi sebelumnya). Dalam kasus terbaik, server Anda menyebarkan malware, yang terburuk data Anda sekarang publik atau hilang.

Dibandingkan dengan itu, keuntungannya tidak signifikan:

  1. Lebih sedikit data yang dimuat: kami berbicara tentang 100kb skrip per situs. 1 gambar dengan kualitas rendah memang lebih dari itu. Jika Anda tidak memiliki situs web yang dibatasi dengan 5.000.000 kunjungan per menit, itu tidak akan membuat perbedaan. Dan jika, Anda mungkin harus mengatur lingkungan server yang lebih baik dengan penyeimbang beban dan lebih banyak server web, karena menggunakan CDN tidak akan menyelesaikan masalah Anda.
  2. Waktu pemuatan yang lebih cepat, karena server CDN lebih dekat ke klien: pada waktu, di mana latensi dari UE ke AS sekitar 100 ms untuk hampir semua koneksi, css dimuat dalam 50 ms atau 100 ms.

Ada nol alasan untuk menggunakan CDN pada lingkungan produksi.

cari
sumber