Где вы включаете библиотеку jQuery? Google JSAPI? CDN?
Есть несколько способов включить jQuery и jQuery UI, и мне интересно, что люди используют?
- Google JSAPI
- Сайт jQuery
- ваш собственный сайт/сервер
- другой CDN
Недавно я использовал Google JSAPI, но обнаружил, что для установки SSL-соединения требуется много времени или даже для разрешения google.com. Я использовал для Google следующее:
<script src="https://www.google.com/jsapi"></script>
<script>
google.load('jquery', '1.3.1');
</script>
Мне нравится идея использования Google, поэтому она кэшируется при посещении других сайтов и для экономии полосы пропускания с нашего сервера, но если она остается медленной частью сайта, я могу изменить include.
Что вы используете? У вас были проблемы?
Изменить: Только что посетил сайт jQuery, и они используют следующий метод:
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"></script>
Edit2: Вот как я включил jQuery без каких-либо проблем за последний год:
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"></script>
Разница заключается в удалении http:
. Удалив это, вам не нужно беспокоиться о переходе между http и https.
Ответы
Ответ 1
Без сомнения, я хочу, чтобы JQuery обслуживался серверами API Google. Я не пошел с jsapi методом, так как я не использую какие-либо другие API Google, но если это когда-либо изменится, я бы подумал об этом...
Сначала: Серверы api Google распространяются по всему миру, а не на мой единственный сервер: более строгие серверы обычно означают более быстрое время отклика для посетителя.
Во-вторых:. Многие люди предпочитают размещать JQuery в Google, поэтому, когда посетитель приходит на мой сайт, они могут уже иметь JQuery script в своем локальном кеше. Предварительно кэшированный контент обычно означает более быстрое время загрузки для посетителя.
Третий: Моя веб-хостинговая компания взимает плату за используемую пропускную способность. Нет смысла потреблять 18 тыс. На сеанс пользователя, если посетитель может получить тот же файл в другом месте.
Я понимаю, что я помещаю часть доверия в Google, чтобы обслуживать правильный файл script, а также быть онлайн и доступным. До этого момента я не разочаровался в использовании Google и продолжу эту конфигурацию, пока не будет смысла.
Одна вещь, заслуживающая внимания... Если у вас есть смесь безопасных и небезопасных страниц на вашем сайте, вы можете захотеть динамически изменить источник Google, чтобы избежать обычного предупреждения, которое вы видите при загрузке небезопасного содержимого на защищенной странице:
Вот что я придумал:
<script type="text/javascript">
document.write([
"\<script src='",
("https:" == document.location.protocol) ? "https://" : "http://",
"ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js' type='text/javascript'>\<\/script>"
].join(''));
</script>
ОБНОВЛЕНИЕ 9/8/2010 -
Некоторые рекомендации были сделаны для уменьшения сложности кода путем удаления HTTP и HTTPS и просто используйте следующий синтаксис:
<script type="text/javascript">
document.write("\<script src='//ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js' type='text/javascript'>\<\/script>");
</script>
Кроме того, вы также можете изменить URL-адрес, чтобы отразить основной номер jQuery, если вы хотите, чтобы была загружена последняя основная версия библиотек jQuery:
<script type="text/javascript">
document.write("\<script src='//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js' type='text/javascript'>\<\/script>");
</script>
Наконец, если вы не хотите использовать Google и предпочитаете jQuery, вы можете использовать следующий исходный путь (помните, что jQuery не поддерживает SSL-соединения):
<script type="text/javascript">
document.write("\<script src='http://code.jquery.com/jquery-latest.min.js' type='text/javascript'>\<\/script>");
</script>
Ответ 2
Одна из причин, по которой вы захотите разместить на внешнем сервере, - это обойти ограничения браузера на совместимые соединения с конкретным сервером.
Однако, учитывая, что JQuery файл, который вы используете, скорее всего, не изменяются очень часто, кэш браузера, будет удар и сделать это спорный вопрос, по большей части.
Вторая причина размещения на внешнем сервере - снизить трафик на собственный сервер.
Однако, учитывая размер jQuery, скорее всего, это будет небольшая часть вашего трафика. Вероятно, вам следует попытаться оптимизировать ваш фактический контент.
Ответ 3
jQuery 1.3.1 мин - только размер 18k. Я не думаю, что слишком много хитов, чтобы спросить на начальной загрузке страницы. После этого он будет сохранен в кэше. В результате я принимаю его сам.
Ответ 4
Если вы хотите использовать Google, прямая ссылка может быть более отзывчивой. У каждой библиотеки есть путь, указанный для прямого файла. Это путь jQuery
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.1/jquery.min.js"></script>
Просто перечитайте свой вопрос, есть ли причина, по которой вы используете https? Это тег скрипта, который Google перечисляет в своем примере
<script src="http://www.google.com/jsapi"></script>
Ответ 5
Я бы не хотел, чтобы какой-либо общедоступный сайт, который я разработал, зависел от любого внешнего сайта, и, следовательно, я бы сам размещал jQuery.
Готовы ли вы отключить свой сайт, если другой (Google, jquery.com и т.д.) не работает? Менее зависимостями является ключ.
Ответ 6
Плюсы: у хоста на Google есть преимущества
- Вероятно, быстрее (их серверы более оптимизированы)
- Они корректно обрабатывают кеширование - 1 год (нам трудно позволить изменениям получить заголовки на наших серверах).
- У пользователей, у которых уже есть ссылка на версию, размещенную на Google, в другом домене уже есть файл в кеше
Минусы:
- Некоторые браузеры могут видеть его как кросс-домен XSS и запрещать его.
- В частности, пользователи, использующие плагин NoScript для Firefox
Интересно, можете ли вы ВКЛЮЧИТЬ от Google, а затем проверить наличие какой-либо глобальной переменной или что-то вроде этого, а если отсутствие загрузки с вашего сервера?
Ответ 7
Здесь есть несколько проблем. Во-первых, вы указали метод асинхронной загрузки:
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript">
google.load('jquery', '1.3.1');
google.setOnLoadCallback(function() {
// do stuff
});
</script>
имеет пару проблем. Теги Script приостанавливают загрузку страницы при их получении (при необходимости). Теперь, если они медленно загружаются, это плохо, но jQuery мало. Реальная проблема с указанным выше методом заключается в том, что, поскольку загрузка jquery.js выполняется независимо для многих страниц, они завершат загрузку и рендеринг перед загрузкой jquery, поэтому любой стиль jquery, который вы делаете, будет видимым изменением для пользователя.
Другой способ:
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.1/jquery.min.js"></script>
Попробуйте простые примеры, например, иметь простую таблицу и изменить фон ячеек на желтый с помощью метода setOnLoadCallback() vs $(document).ready() со статической загрузкой jquery.min.js. Второй метод не будет иметь заметного мерцания. Первый будет. Лично я считаю, что это не очень хороший пользовательский интерфейс.
В качестве примера выполните следующее:
<html>
<head>
<title>Layout</title>
<style type="text/css">
.odd { background-color: yellow; }
</style>
</head>
<body>
<table>
<tr><th>One</th><th>Two</th></tr>
<tr><td>Three</td><td>Four</td></tr>
<tr><td>Five</td><td>Six</td></tr>
<tr><td>Seven</td><td>Nine</td></tr>
<tr><td>Nine</td><td>Ten</td></tr>
</table>
<script src="http://www.google.com/jsapi"></script>
<script>
google.load("jquery", "1.3.1");
google.setOnLoadCallback(function() {
$(function() {
$("tr:odd").addClass("odd");
});
});
</script>
</body>
</html>
Вы должны увидеть таблицу, а затем строки желтеют.
Вторая проблема с методом google.load() заключается в том, что он содержит только ограниченный набор файлов. Это проблема для jquery, поскольку она чрезвычайно зависима от подключаемого модуля. Если вы попытаетесь включить плагин jquery с тегом <script src="...">
и google.load()
, плагин, вероятно, завершит с ошибками сообщения "jQuery не определен", потому что он еще не загружен. Я действительно не вижу способа обойти это.
Третья проблема (с любым методом) состоит в том, что они являются одной внешней нагрузкой. Предполагая, что у вас есть плагины и собственный код Javascript, вы загружаете как минимум два внешних запроса для загрузки вашего Javascript. Вероятно, вам лучше получить jquery, все соответствующие плагины и собственный код и поместить его в один миниатюрный файл.
Из Должен ли вы использовать API-интерфейс API Ajax для хостинга?:
Что касается времени загрузки, вы на самом деле загрузка двух скриптов - jsapi scriptи mootools Script ( сжатая версия сверху). Так это два соединения, а не один. По моему опыту, я обнаружил, что время загрузки было фактически 2-3 раза медленнее, чем загрузка с моего собственного персональный общий сервер, хотя он пришел из Google, и моя версия сжатого файла было K больше, чем у Google. Это, даже после загрузки файла и (предположительно). Поэтому для меня, поскольку пропускная способность не имеет большого значения, не будет иметь значения.
Наконец, у вас есть потенциальная проблема параноидального браузера, помеченного для запроса как своего рода попытка XSS. Обычно это не проблема с настройками по умолчанию, а в корпоративных сетях, где пользователь может не контролировать, какой браузер они используют, не говоря уже о настройках безопасности, которые могут возникнуть.
Таким образом, в конце концов, я не могу видеть, что я использую API AJAX Google для jQuery по крайней мере (более "полные" API - это совсем другая история), за исключением случаев, когда вы отправляете примеры.
Ответ 8
В дополнение к людям, которые советуют размещать его на собственном сервере, я предложил сохранить его в отдельном домене (например, static.website.com), чтобы браузеры могли загружать его отдельно от другого потока контента. Этот совет также работает для всех статических материалов, например изображений и css.
Ответ 9
Мне нужно проголосовать -1 за библиотеки, размещенные в Google. Они собирают данные, стиль Google Analytics, с их обертками вокруг этих библиотек. Как минимум, я не хочу, чтобы клиентский браузер делал больше, чем я прошу об этом, а тем более ничего на странице. В худшем случае это "новая версия" Google, которая не зла - используя ненавязчивый javascript для сбора дополнительных данных об использовании.
Примечание: если они изменили эту практику, супер. Но в последний раз, когда я рассматривал использование своих размещенных библиотек, я отслеживал исходящий HTTP-трафик на своем сайте, и периодические вызовы на серверы google не были тем, что я ожидал увидеть.
Ответ 10
Я мог бы быть старой школой, но я все еще нахмурился. Возможно, Google является исключением, но в целом это действительно хорошие манеры для размещения файлов на вашем собственном сервере.
Ответ 11
Я добавлю это как причину локального размещения этих файлов.
Недавно node в Южной Калифорнии на TWC не удалось разрешить домен ajax.googleapis.com(для пользователей с IPv4), так что мы не получаем внешние файлы. Это было прерывистым до вчерашнего дня (теперь это настойчиво.) Поскольку это прерывисто, у меня возникло множество проблем, связанных с устранением проблем пользователей SaaS. Проводили бесчисленные часы, пытаясь отследить, почему у некоторых пользователей не было проблем с программным обеспечением, а другие - танками. В моем обычном процессе отладки у меня нет привычки спрашивать пользователя, отключен ли IPv6.
Я наткнулся на проблему, потому что сам использовал этот конкретный "маршрут" к файлу, а также использую только IPV4. Я обнаружил, что проблема с инструментами разработчиков говорит мне, что jquery не загружается, а затем начал делать traceroutes и т.д., Чтобы найти реальную проблему.
После этого я, скорее всего, никогда не вернусь к внешним файлам, потому что: google не нужно спускаться, чтобы это стало проблемой, и... любой из этих узлов может быть взломан с использованием DNS-захвата и доставлять вредоносные js вместо фактического файла. Всегда думал, что я в безопасности, потому что домен google никогда не опустится, теперь я знаю, что любой node между пользователем и хостом может быть точкой отказа.
Ответ 12
Я просто включаю последнюю версию с сайта jQuery: http://code.jquery.com/jquery-latest.pack.js Это соответствует моим потребностям, и мне не нужно беспокоиться об обновлении.
РЕДАКТИРОВАТЬ: для основного веб-приложения, конечно же, контролировать его; загрузите его и подайте сами. Но для моего личного сайта мне было все равно. Вещи не волшебным образом исчезают, они обычно устаревают первыми. Я не отстаю от него достаточно, чтобы знать, что изменить для будущих выпусков.
Ответ 13
Вот какой-то полезный ресурс, надеюсь, вы сможете выбрать свой CDN.
Недавно MS добавила новый домен для доставки библиотек через их CDN.
Старый формат: http://ajax.microsoft.com/ajax/jQuery/jquery-1.5.1.js
Новый формат: http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.5.1.js
Это не должно отправлять все файлы cookie для microsoft.com.
http://www.asp.net/ajaxlibrary/cdn.ashx#Using_jQuery_from_the_CDN_11
Вот некоторые статистические данные о самых популярных технологиях, используемых в Интернете во всех технологиях.
http://trends.builtwith.com/
Надежда может помочь вам выбрать.
Ответ 14
Если я отвечаю за "живой" сайт, я лучше знаю все, что происходит
и в мой сайт. По этой причине я размещаю версию jquery-min самостоятельно либо на том же сервере, либо на статическом/внешнем сервере, но в любом случае это место, где только я (или моя программа/прокси) может обновлять библиотеку после проверки/проверки каждого изменения
Ответ 15
В голове:
(function() {
var jsapi = document.createElement('script'); jsapi.type = 'text/javascript'; jsapi.async = true;
jsapi.src = ('https:' == document.location.protocol ? 'https://' : 'http://') + 'www.google.com/jsapi?key=YOUR KEY';
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('head')[0]).appendChild(jsapi);
})();
Конец тела:
<script type="text/javascript">
google.load("jquery", "version");
</script>
Ответ 16
Я размещаю его с другими файлами js на своем собственном сервере и, что то, объединяет и минимизирует их (с помощью django-compresser, здесь, но это не так), чтобы обслуживать только один файл js, с все, что нужно для этого сайта. В любом случае вам нужно будет обслуживать ваши собственные js файлы, поэтому я не вижу причин не добавлять лишние байты jquery - слишком много kbs намного дешевле, чем больше запросов. Вы не зависите от кого-либо, и как только ваши мини-js будут кэшированы, вы тоже очень быстро.
При первой загрузке решение на базе CDN может выиграть, потому что вы должны загрузить дополнительные килобайты jquery с вашего собственного сервера (но без дополнительного запроса). Я сомневаюсь, что разница примечательна. И тогда, при первом загрузке с очищенным кешем, ваше собственное размещенное решение, вероятно, всегда будет намного быстрее, из-за большего количества запросов (и запросов DNS), необходимых для получения CDN jquery.
Интересно, как этот момент почти никогда не упоминается и как CDN, похоже, захватывают мир:)
Ответ 17
Используйте sintoth:
<script src="https://u1i.usercontent.sintoth.com/jquery/jquery.js"></script>
<div id="hello">Hello</div><button id="hide" type="button">Hide</button>
<script>$("#hello").html("Goodbye");
$("#hide").click(function(){
$("#hello").slideUp();
});
</script>