При условии
- CDN - это хорошая вещь, потому что они могут обслуживать ресурсы ближе к клиенту, клиент может их кэшировать, и вы можете уменьшить нагрузку на свой собственный сервер.
- В последних браузерах загрузка ресурсов со сторонних серверов не снижает безопасность благодаря Subresource Integrity (SRI) .
- CDN могут быть недоступны или заблокированы в некоторых странах и недоступны при разработке в автономном режиме 1 .
Я думаю, что это является обязательным для использования CDN, но и быть готовым к тому, что они будут недоступны. Этот блог дает хорошее представление о различных подходах к предоставлению запасных вариантов. Если вы посмотрите на базовый пример, то увидите, что он уже содержит довольно много стандартного кода для обеспечения откатов только для jQuery и Bootstrap, в то время как предпочтительное решение предлагает использовать Fallback.js , который, по-видимому, практически не поддерживается в прошлом году. , Точно так же, наиболее актуальный вопрос SO для данной темы касается только предоставления запасного варианта для jQuery.
Тем не менее, в большинстве реальных проектов я бы ожидал иметь 5 или более ресурсов js / css, поэтому я чувствую, что вам не нужно повторять какой-то грязный шаблон, чтобы обеспечить запасные варианты для всех из них. Кроме того, каждый раз, когда вы добавляете или обновляете ресурс, вы должны
- Обновите ссылку CDN
- Обновите локальную резервную копию путем ручной загрузки или изменения версии в конфигурации npm / bower.
- Обновите ссылку на запасной вариант
- Обновите хэш SRI
В то время как в идеальном мире я ожидал бы добавить / обновить ресурс в одном файле конфигурации, а все остальные шаги выполнить автоматически (а затем запустить тесты, чтобы выяснить, не сработало ли обновление).
Есть ли уже установленный рабочий процесс для достижения этой цели?
Или CDN, и особенно SRI, еще слишком новы?
Или большинство людей просто не хотят предоставлять запасные варианты для ресурсов CDN?
1. Хотя у вас может быть сборка для разработчиков, которая не зависит от CDN, но я также считаю, что это форма запасного варианта, поскольку ее также необходимо поддерживать.
Fallback.js
поддерживается, потому что это уже работает отлично? Программное обеспечение не нужно менять каждые 5 минут, если оно уже работает.