Dato che
- Le CDN sono una buona cosa perché possono servire risorse più vicine al client, il client può memorizzarle nella cache e ridurre il carico sul proprio server.
- Nei browser recenti, il caricamento di risorse da server di terze parti non riduce la sicurezza grazie all'integrità delle risorse secondarie (SRI) .
- I CDN potrebbero essere inattivi o bloccati in alcuni Paesi e non sono disponibili durante lo sviluppo offline 1 .
Penso che sia interessante usare i CDN, ma anche essere pronti a renderli non disponibili. Questo post sul blog offre una buona introduzione a diversi approcci per fornire fallback. Se guardi l' esempio di base , puoi vedere che contiene già un po 'di codice boilerplate per fornire fallback solo per jQuery e Bootstrap, mentre la soluzione preferita suggerisce l'uso di Fallback.js , che sembra essere rimasto in gran parte non mantenuto per l'anno passato . Allo stesso modo, la domanda SO più rilevante per l'argomento riguarda solo la fornitura di un fallback per jQuery.
Tuttavia, nella maggior parte dei progetti del mondo reale, mi aspetterei di avere 5 o più risorse js / css, quindi mi sento come se non dovessi ripetere un po 'di piastra disordinata per fornire fallback per tutti loro. Inoltre, ogni volta che aggiungi o aggiorni una risorsa, ora devi farlo
- Aggiorna il collegamento CDN
- Aggiorna la copia di fallback locale scaricando manualmente o modificando la versione in npm / bower config
- Aggiorna il collegamento al fallback
- Aggiorna l'hash SRI
Mentre nel mondo ideale , mi aspetterei di aggiungere / aggiornare la risorsa in un file di configurazione e fare eseguire automaticamente tutti gli altri passaggi (e quindi eseguire i test per vedere se l'aggiornamento ha interrotto qualcosa).
Esiste già un flusso di lavoro prestabilito per raggiungere questo obiettivo?
Oppure i CDN, e in particolare gli SRI, sono ancora troppo recenti?
O alla maggior parte delle persone semplicemente non interessa fornire fallback per le risorse CDN?
1. Anche se potresti avere una build di sviluppo che non si basa su CDN, ma considero anche una forma di fallback, poiché deve anche essere mantenuta.
Fallback.js
non viene mantenuto perché funziona già perfettamente? Il software non deve essere cambiato ogni 5 minuti se funziona già.