Menyediakan Sumber Daya JS dan CSS Lokal untuk Pengembalian CDN

13

Mengingat bahwa

  • CDN adalah Good Thing karena mereka dapat melayani sumber daya lebih dekat dengan klien, klien dapat men-cache mereka, dan Anda dapat mengurangi beban di server Anda sendiri.
  • Di browser terbaru, memuat sumber daya dari server pihak ketiga tidak mengurangi keamanan berkat Subresource Integrity (SRI) .
  • CDN mungkin turun atau diblokir di beberapa negara, dan tidak tersedia saat mengembangkan offline 1 .

Saya pikir itu mendesak untuk menggunakan CDN, tetapi juga harus siap untuk mereka agar tidak tersedia. Posting blog ini memberikan pengantar yang bagus untuk berbagai pendekatan untuk menyediakan fallback. Jika Anda melihat contoh Basic , Anda dapat melihat bahwa itu sudah berisi sedikit kode boilerplate untuk menyediakan fallback hanya untuk jQuery dan Bootstrap, sementara solusi yang disarankan menyarankan menggunakan Fallback.js , yang tampaknya sebagian besar tidak terawat selama setahun terakhir. . Demikian pula, pertanyaan SO yang paling relevan untuk topik ini hanya tentang menyediakan fallback untuk jQuery.

Namun, di sebagian besar proyek dunia nyata, saya berharap memiliki 5 atau lebih sumber daya js / css, jadi saya merasa Anda tidak perlu mengulangi beberapa boilerplate yang berantakan untuk memberikan cadangan untuk semuanya. Selain itu, setiap kali Anda menambah atau memperbarui sumber daya, Anda sekarang harus melakukannya

  • Perbarui tautan CDN
  • Perbarui salinan cadangan lokal dengan mengunduh manual atau mengubah versi dalam konfigurasi npm / bower
  • Perbarui tautan ke fallback
  • Perbarui hash SRI

Sedangkan di Dunia Ideal , saya akan berharap untuk menambah / memperbarui sumber daya dalam satu file konfigurasi, dan meminta semua langkah lainnya dijalankan secara otomatis (dan kemudian menjalankan tes untuk melihat apakah pembaruan tersebut merusak sesuatu).

Apakah sudah ada alur kerja yang mapan untuk mencapai ini?

Atau apakah CDN, dan terutama SRI, masih terlalu baru?

Atau apakah kebanyakan orang tidak peduli untuk memberikan cadangan untuk sumber daya CDN?


1. Meskipun Anda bisa memiliki pengembangan dev yang tidak bergantung pada CDN, tetapi saya juga menganggap itu sebagai bentuk mundur, karena juga perlu dipertahankan.

ValarDohaeris
sumber
Saya sendiri belum mengutak-atik CDN, tetapi sepertinya memang mungkin untuk mengotomatiskan semua kecuali satu dari langkah-langkah itu sebagai bagian dari proses penyebaran standar seseorang.
Ixrec
tidak Fallback.jsterawat karena sudah berfungsi dengan baik? Perangkat lunak tidak harus diubah setiap 5 menit jika sudah berfungsi.
Robert Harvey
1
Tidak, saya berpendapat itu tidak berfungsi dengan baik, kalau tidak saya tidak melihat mengapa penulis akan mulai bekerja pada versi baru 2. Saya juga akan mengklaim bahwa perpustakaan yang sangat penting bagi sebuah situs web untuk bekerja dengan benar memiliki untuk terus diuji dan ditingkatkan. Dari apa yang saya mengerti, menambahkan lebih banyak tes dan CI pada browser yang berbeda sebenarnya adalah salah satu tujuan utama versi 2. Saat ini juga tidak memiliki dukungan untuk SRI.
ValarDohaeris

Jawaban:

1

Saya pikir Anda mungkin salah paham bagaimana situs yang lebih besar yang mungkin membutuhkan ketahanan seperti ini menggunakan CDN.

ini bukan hanya masalah hosting jQuery atau beberapa gambar. Mayoritas situs akan di-host di CDN, dengan hanya hal-hal yang dihasilkan secara dinamis seperti halaman pembayaran atau keranjang belanja yang di-host di 'webfarm utama'

Bahkan ini bergerak semakin banyak untuk diproses secara lokal dengan JS dan cookie untuk menampilkan hal-hal spesifik pengguna tanpa memukul pemrosesan sisi server.

Jika CDN gagal dan Anda mulai mendapatkan semua lalu lintas berlalu ke server web Anda, kemungkinan akan jatuh, jika tidak Anda tidak benar-benar membutuhkan CDN.

Ewan
sumber
Anda dapat memiliki cadangan CDN yang secara otomatis ditingkatkan. Dan dengan CDN ini bukan tentang lalu lintas tetapi juga tentang menjadi lebih nyaman dan pengurangan biaya. Saya pikir CDN juga masuk akal di situs web dengan lalu lintas rendah, mengapa tidak?
Sjoerd222888
1

Situs yang saya kerjakan di CDN kami menjadi semakin penting bagi situs ini. Pada awalnya kami hanya menggunakannya untuk menyimpan gambar / CSS / JS. Pada tahap ini kami memiliki properti konfigurasi yang menulis ulang nama host sumber daya ini dari www.mysite.com/ ke www.cdn.com/ jadi jika CDN turun, kami cukup mengubah nilai host ini atau mematikannya sepenuhnya dan meninggalkannya url yang menunjuk ke server web kami.

Namun kami sekarang telah beralih ke caching pada dasarnya seluruh halaman dengan konten yang dipersonalisasi dimuat melalui AJAX. CDN kami telah menjadi penting untuk situs kami dan kami dapat berjalan tanpa itu sebanyak yang kami bisa server HTTP kami sendiri. Kami membayar uang CDN kami sebagian karena ketahanannya dan janji SLA akan waktu aktif, oleh karena itu menempatkan waktu dan upaya dalam fallback tampaknya hanya buang-buang waktu. Kami memiliki rencana DR di tempat hanya jika ada masalah besar dengan penyedia kami tetapi itu bukan proses otomatis sederhana dan akan melihat periode pemadaman saat kami bermigrasi ke CDN mundur kami.

Jadi dalam menjawab pertanyaan Anda, itu tergantung pada seberapa integralnya situs Anda, CDN. Jika hanya aset Anda yang dimasukkan ke dalam CDN dan dengan asumsi server http Anda dapat menangani beban penyajian konten ini maka Anda dapat menggunakan sakelar konfigurasi untuk menghidupkan atau mematikan CDN. Ditambah dengan alat pemantauan Anda dapat mengotomatiskan bahwa sakelar hidup atau mati.

Sutty1000
sumber
0

Saya melihat 3 alasan yang sangat penting untuk menggunakan CDN:

  1. Kurangi latensi jaringan bagi pengguna di wilayah yang jauh. Ketika Anda memiliki situs web untuk pemirsa global, hosting Anda di Amerika Utara tampaknya tidak cepat bagi pengguna di Asia Selatan, terutama di Cina. Perbedaan dalam pengalaman pengguna mungkin sangat besar sehingga akan mencegah pengguna menggunakan situs Anda. Dalam hal ini CDN multi-regional akan sangat penting untuk bisnis Anda.

  2. Sajikan sebanyak mungkin dari sumber daya yang tersedia. Keandalan adalah salah satu alasan utama untuk menggunakan cloud CDNs - lalu lintas secara otomatis dialihkan ke node yang tersedia dan Anda dapat menambahkan beberapa langkah-langkah tambahan untuk mengubah rute lalu lintas jika seluruh wilayah cloud turun.

  3. CDN lebih mudah dirawat dan lebih murah daripada server aplikasi yang menyajikan konten dinamis. Ketika Anda harus berurusan dengan masalah yang disebutkan di atas, itu cara alami untuk menghemat uang.

Semua ini berarti, bahwa tujuan CDN adalah untuk meningkatkan ketersediaan konten Anda kepada pengguna akhir. Jika CDN gagal atau menjadi lambat karena suatu alasan, mundur dari sisi klien akan secara signifikan meningkatkan memuat halaman, karena itu pertama-tama akan mencoba untuk mendapatkan sumber daya yang tidak dapat diakses. Solusi yang lebih baik adalah memiliki desain sisi server yang akan membuat substitusi URL dasar dalam tautan seperti "{CDN} /js/jquery-version-min.js". Ini akan memungkinkan untuk merutekan ulang lalu lintas ke server aplikasi alih-alih CDN jika pemeriksaan kesehatan CDN gagal - klien tidak akan melakukan permintaan yang tidak perlu dan akan langsung menuju ke server aplikasi, yang akan menjadi solusi mundur Anda dengan solusi sisi klien. Ini juga akan memecahkan masalah penyebaran lokal dan pementasan,

Ivan Gammel
sumber