2015-06-17 2 views
4

У меня был этот вопрос на некоторое время, и я удивлен, что мне еще предстоит найти хороший/полный ответ на него.Загружать файлы js из Интернета или обслуживать их самостоятельно?

Вопрос в основном таков: Когда дело доходит до загрузки js-файлов, в каких ситуациях вы должны загружать их из Интернета, если они доступны, или обслуживать их самостоятельно? В каком случае обычно допускается самая низкая задержка?

E.g.

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>

против

<script src="js/jquery-1-11-3.min.js"></script>

+1

Я просто догадываюсь, но я подозреваю, что CDN от Google более совершенен, чем ваш. –

ответ

5

Полный ответ: Оба.

Загрузка его полотна принесет пользу вам в несколько способов:

1) Существует ограничение на количество максимальной открытой HTTP запросов браузер может иметь. Однако этот предел для домена. Таким образом, обращение к серверам Google не помешает вам загрузить ваши CSS/изображения.

2) Очень вероятно, что пользователь уже будет иметь этот файл в кэше, поэтому они получат ответ HTTP 304 not changed и не должны будут загружать файл.

Теперь, с учетом сказанного, иногда сервер будет отключен, или проблемы с сетью в противном случае не позволят вам загрузить этот файл. Когда это произойдет, вам нужен обходной путь, который мы можем сделать, как так:

<script> 
if (typeof jQuery == 'undefined') { 
    document.write(unescape("%3Cscript src='/js/jquery-2.0.0.min.js' type='text/javascript'%3E%3C/script%3E")); 
} 
</script> 

Поместите этот тег после загрузки JQuery из CDN, если загрузка не удалась, jQuery будет неопределенным и продолжить, чтобы загрузить его с локального источник. Если загрузка с CDN работала, то этот блок будет пропущен.

+1

Мне любопытно, есть ли какой-нибудь js lib, который может сделать этот трюк для вас сейчас? – fuyushimoya

+2

Если у вас есть сайт с достаточным количеством тегов скрипта, который RequireJS становится хорошей идеей, он имеет некоторую стенографию. Https://github.com/jrburke/requirejs/wiki/Upgrading-to-RequireJS-2.0#pathsfallbacks –

+0

Ahh, мой рабочий сайт просто использует requireJs в качестве загрузчика, хотя он запущен в частной сети, эта информация многому меня научила, большое спасибо. – fuyushimoya

1

В том числе за счет собственных плюсов сервера:

  • Технически сервера Google могут быть вниз, и ваш сайт не будет правильно загрузить.

  • люди, которые не доверяют Google и блокируют его, скрипт заблокирован и т. Д. Эти ppl тоже не хотят включать файл из Google напрямую.

  • Соединения с google могут иметь более высокую задержку. если у вас есть аудитория в вашей стране и хороший провайдер, ваш connec может быть быстрее, чем googles.

противопоказания:

  • выше трафика

  • больше соединений WebServer

  • выше влияние CPU

Вы должны решить для себя, который лучше для вас.Для небольших сайтов я бы пошел на локальный файл.

+0

Google CDN довольно распространен. Если вы не находитесь где-то там, где он явно заблокирован (например, Китай может быть), все равно маловероятно, что ваша локальная машина будет иметь ресурсы Googles. Плюс, если он был восстановлен после его кэширования. –

Смежные вопросы