Comments 29
Картинка это отсылка к Назад в Будущее 3?
+14
Конкатенацию файлов надо бы применять умно: конкатенировать группы файлов. Сначала те, которые важны для первоначальной загрузки страницы и загрузки остальных файлов, потом уже группа(-ы) второстепенных файлов.
Также, все популярные библиотеки и так закешированы и Google CDN наверняка быстрее и отказоустойчивее чем Akamai
Также, все популярные библиотеки и так закешированы и Google CDN наверняка быстрее и отказоустойчивее чем Akamai
-2
Google CDN наверняка быстрее и отказоустойчивее чем Akamai
А откуда такие доводы? Приведите, пожалуйста, аналитику или хоть какое-нибудь обоснование.
+2
Это сильно зависит от задачи.
В статье описан самый простой пример, который, однако вполне можно считать рабочим вплоть до 300-500 KB минифицированных скриптов/CSS (30-70 KB с gzip). А это размер крупного SPA.
Если больше, то можно начинать думать об оптимизации. Самое простое — разнести вендор-файлы и файлы приложения. Приложение обновляется намного чаще, чем библиотеки, поэтому в основном клиенты будут перекачивать лишь малую часть данных.
Если приложение совсем большое (или в каких-то разделах используются тяжёлые библиотеки), то можно уже группировать по частям — common + отдельные файлы для каждого раздела. В статье об этом не написано, потому что в общем случае это делается нетривиальным образом — или всё разносить по файлам руками, имея риск что-то забыть/перепутать, или с самого начала выбирать архитектуру приложения, исходя из этого требования. Здесь можно отметить яндексовские BEM + bem-tools и более новый webpack.
Есть и другой интересный момент — если файлов становится слишком много (включая все скрипты, стили и картинки), то чтобы не нарваться на ограничение на число параллельных запросов на один домен, можно начинать разносить статику по разным поддоменам штук по 6 ссылок на каждый. Но здесь уже всё совсем индивидуально — надо тестировать, экспериментировать, проверять на различных типах подключения и т.д., иначе можно скорее потерять в скорости загрузки сайта.
Насчёт библиотек по CDN. Использовать сторонние скрипты в HTML я бы никогда не стал и никому не советую. Во-первых, добавляется ещё одна точка отказа. Все падают — и Гугл, и Яндекс, и, думаю, мало кому из ваших клиентов понравится увидеть полностью неработающий сайт только потому что какой-то из внешних ресурсов отвалился (а обычно их прям пачкой добавляют). Во-вторых, вы точно осознаёте, что загружая скрипт с чужого сервера, вы по сути даёте кому-то полный контроль за вашим сайтом? Популярный CDN, конечно, не будет скорее всего кого-то ломать, но его ведь могут и самого поломать.
Да и эффективность такого решения по моему мнению сильно преувеличена — вы скорее проиграете на резолве домена и разогреве кэша, чем при прогоне десятка килобайт по открытому TCP-соединению с разогретым congestion window. (Какой-то крупный сайт публиковал отчёт по поводу процента клиентов с разогретым кэшом на главной странице, и цифры там были далеко не большие.)
В статье описан самый простой пример, который, однако вполне можно считать рабочим вплоть до 300-500 KB минифицированных скриптов/CSS (30-70 KB с gzip). А это размер крупного SPA.
Если больше, то можно начинать думать об оптимизации. Самое простое — разнести вендор-файлы и файлы приложения. Приложение обновляется намного чаще, чем библиотеки, поэтому в основном клиенты будут перекачивать лишь малую часть данных.
Если приложение совсем большое (или в каких-то разделах используются тяжёлые библиотеки), то можно уже группировать по частям — common + отдельные файлы для каждого раздела. В статье об этом не написано, потому что в общем случае это делается нетривиальным образом — или всё разносить по файлам руками, имея риск что-то забыть/перепутать, или с самого начала выбирать архитектуру приложения, исходя из этого требования. Здесь можно отметить яндексовские BEM + bem-tools и более новый webpack.
Есть и другой интересный момент — если файлов становится слишком много (включая все скрипты, стили и картинки), то чтобы не нарваться на ограничение на число параллельных запросов на один домен, можно начинать разносить статику по разным поддоменам штук по 6 ссылок на каждый. Но здесь уже всё совсем индивидуально — надо тестировать, экспериментировать, проверять на различных типах подключения и т.д., иначе можно скорее потерять в скорости загрузки сайта.
Насчёт библиотек по CDN. Использовать сторонние скрипты в HTML я бы никогда не стал и никому не советую. Во-первых, добавляется ещё одна точка отказа. Все падают — и Гугл, и Яндекс, и, думаю, мало кому из ваших клиентов понравится увидеть полностью неработающий сайт только потому что какой-то из внешних ресурсов отвалился (а обычно их прям пачкой добавляют). Во-вторых, вы точно осознаёте, что загружая скрипт с чужого сервера, вы по сути даёте кому-то полный контроль за вашим сайтом? Популярный CDN, конечно, не будет скорее всего кого-то ломать, но его ведь могут и самого поломать.
Да и эффективность такого решения по моему мнению сильно преувеличена — вы скорее проиграете на резолве домена и разогреве кэша, чем при прогоне десятка килобайт по открытому TCP-соединению с разогретым congestion window. (Какой-то крупный сайт публиковал отчёт по поводу процента клиентов с разогретым кэшом на главной странице, и цифры там были далеко не большие.)
+1
А вот и прямое подтверждение: blog.jquery.com/2014/09/23/was-jquery-com-compromised/
Пишут что сама библиотека не была скомпрометирована, но обычно такие новости заставляют сильно задуматься, стоит ли загружать скрипты на своих сайтах непонятно откуда.
Пишут что сама библиотека не была скомпрометирована, но обычно такие новости заставляют сильно задуматься, стоит ли загружать скрипты на своих сайтах непонятно откуда.
0
Есть ли у вас автоматическая загрузка контента с основного домена в сеть CDN?
Например, чтобы при запросе static.example.com/image/logo.jpg ваш сервер запрашивал example.com/image/logo.jpg и загружал файл на облачный сервер.
Например, чтобы при запросе static.example.com/image/logo.jpg ваш сервер запрашивал example.com/image/logo.jpg и загружал файл на облачный сервер.
+1
Советы применимы не только к статическим сайтам, но и вообще к статическом контенту.
+3
Очередная статья, рассказывающая о том, чего и так в интернете полно. Еще, совершенно не понятно, какие преимущества будет иметь ваш noname CDN по сравнению с Google CDN?
-7
>> Используйте возможности CDN
У меня как раз где-то неделю назад пробегала одна мысль по этому поводу…
Использовать Google Drive в качестве CDN.
То есть, через API (или какими другими «хитрыми» способами) загружать фотографии товаров, видео, скрипты и т.п. на диски google и расшаривать по ссылке.
В итоге получается, в принципе, отказоустойчивая система, не нагружающая непосредственно сервер с сайтом.
При этом, места хватит, чтобы хранить достаточно много различной информации.
Можно, «на всякий случай», завести несколько аккаунтов и выбирать их в случайном порядке.
У меня как раз где-то неделю назад пробегала одна мысль по этому поводу…
Использовать Google Drive в качестве CDN.
То есть, через API (или какими другими «хитрыми» способами) загружать фотографии товаров, видео, скрипты и т.п. на диски google и расшаривать по ссылке.
В итоге получается, в принципе, отказоустойчивая система, не нагружающая непосредственно сервер с сайтом.
При этом, места хватит, чтобы хранить достаточно много различной информации.
Можно, «на всякий случай», завести несколько аккаунтов и выбирать их в случайном порядке.
-2
+7
Вот хитрецы, а!
Спасибо за скриншот, я догадывался, что будет не всё так просто.
…
Но ведь есть много других хранилищ, тот же Яндекс.Диск, dropbox и т.п.
Или, например, picasa…
А если пойти дальше, то ВКонтакте, Фото Mail.ru и т.п.
Спасибо за скриншот, я догадывался, что будет не всё так просто.
…
Но ведь есть много других хранилищ, тот же Яндекс.Диск, dropbox и т.п.
Или, например, picasa…
А если пойти дальше, то ВКонтакте, Фото Mail.ru и т.п.
-1
Хранилище != CDN
Dropbox: 20GB/Day
Yandex.disk: Когда объем публичных файлов, скачанных с вашего Диска, превышает доступный вам объем Диска в два раза, скорость скачивания ваших файлов ограничивается. Ограничение действует сутки: опубликованные вами файлы можно качать со скоростью не больше 64 Кбит/с. Через сутки счетчик скачанного объема сбрасывается.
Вконтакте и Mail.ru не имеют CDN.
Ну не бывает бесплатного сыра…
Dropbox: 20GB/Day
Yandex.disk: Когда объем публичных файлов, скачанных с вашего Диска, превышает доступный вам объем Диска в два раза, скорость скачивания ваших файлов ограничивается. Ограничение действует сутки: опубликованные вами файлы можно качать со скоростью не больше 64 Кбит/с. Через сутки счетчик скачанного объема сбрасывается.
Вконтакте и Mail.ru не имеют CDN.
Ну не бывает бесплатного сыра…
+5
Блин, и тут тоже всё продумали!
>> Вконтакте и Mail.ru не имеют CDN.
Тут имелось ввиду не CDN, а загрузка данных в публичную часть через эмуляцию действий пользователя.
Грубо говоря, скрипт, который подобно пользователю создаёт альбомы и загружает туда изображения.
А потом записывает сгенерированную ссылку в базу и отдаёт уже на сайте.
>> Ну не бывает бесплатного сыра
Это не из-за желания бесплатного сыра, это больше ради интереса.
Так сказать, «А что, если...»
Ну и… вдруг не мне одному пришла мысль, «как обмануть всех».
>> Вконтакте и Mail.ru не имеют CDN.
Тут имелось ввиду не CDN, а загрузка данных в публичную часть через эмуляцию действий пользователя.
Грубо говоря, скрипт, который подобно пользователю создаёт альбомы и загружает туда изображения.
А потом записывает сгенерированную ссылку в базу и отдаёт уже на сайте.
>> Ну не бывает бесплатного сыра
Это не из-за желания бесплатного сыра, это больше ради интереса.
Так сказать, «А что, если...»
Ну и… вдруг не мне одному пришла мысль, «как обмануть всех».
0
Когда у вас будет достаточно много пользователей и серьезный трафик, то вы почувствуете подводные камни этого решения и будет уже поздно…
PS: как раз akme иллюстрирует
PS: как раз akme иллюстрирует
+5
Кстати, если продукт РУ-ориентированный, хорошо бы смотреть и РУ-ориентированный CDN.
Т.е. не только Москва-СПБ, но и Нижний Новгород, Новосиб, Хабаровск и т.д.
А то международные CDN вполне могут часть запросов послать в Нидерланды, а часть — в Китай.
Т.е. не только Москва-СПБ, но и Нижний Новгород, Новосиб, Хабаровск и т.д.
А то международные CDN вполне могут часть запросов послать в Нидерланды, а часть — в Китай.
+1
Да, мой комментарий больше для людей, которые будут выбирать CDN (ведь данный пост — не реклама одного akamai, я надеюсь).
Хотя у akamai самые восточные в России — Новосиб и Барнаул.
Остается поле для сравнения, если кому-то понадобятся более восточные точки.
Хотя у akamai самые восточные в России — Новосиб и Барнаул.
Остается поле для сравнения, если кому-то понадобятся более восточные точки.
+1
Прочитал Ваш комментарий, и у меня тут же возник вопрос: а есть ли вообще какие-нибудь CDN, у которых в России есть точки присутствия восточнее Новосибирска? В дальневосточном регионе, напримре, есть у кого-нибудь точки присутствия?
+1
Вообще, да.
skyparkcdn.ru/#pops
moscow.megafon.ru/operators/data_services/map_data_centers/
www.cdnvideo.ru/tekhnologiya/topologiya-seti-cdnvideo/
www.ngenix.net/network
Но дьявол кроется в деталях.
Во первых, мне кажется, эти CDN ориентированы больше на рунет.
Во вторых нужно смотреть на соотношение цена/профит, особенно для мелкой статики.
Вполне возможно, «в целом» по цене, удобству и присутствию в мире akamai наберет больше очков.
Возможно, каким-то проектам проще сделать свое — в нужной точке поставить/арендовать сервер, закинуть в tmpfs статику и отдавать самим.
skyparkcdn.ru/#pops
moscow.megafon.ru/operators/data_services/map_data_centers/
www.cdnvideo.ru/tekhnologiya/topologiya-seti-cdnvideo/
www.ngenix.net/network
Но дьявол кроется в деталях.
Во первых, мне кажется, эти CDN ориентированы больше на рунет.
Во вторых нужно смотреть на соотношение цена/профит, особенно для мелкой статики.
Вполне возможно, «в целом» по цене, удобству и присутствию в мире akamai наберет больше очков.
Возможно, каким-то проектам проще сделать свое — в нужной точке поставить/арендовать сервер, закинуть в tmpfs статику и отдавать самим.
0
wwwnui.akamai.com/gnet/globe/index.html
Сервера в России у них явно есть. А вот насчет правильной маршрутизации могут быть нюансы.
Сервера в России у них явно есть. А вот насчет правильной маршрутизации могут быть нюансы.
0
За какие конкретные нюансы вы опасаетесь? Так то они есть у всех CDN…
0
Ну я не то чтобы опасаюсь. Я с Akamai работал, правда на американский рынок. CDN у них мощнейший.
Просто например если Новосибирский сервер будет недоступен, пойдет запрос куда-нибудь в Монголию, вместо Иркутска. А в Беларуси вообще серверов у них нет. Откуда будет запрашиваться контент, предугадать сложно.
Просто например если Новосибирский сервер будет недоступен, пойдет запрос куда-нибудь в Монголию, вместо Иркутска. А в Беларуси вообще серверов у них нет. Откуда будет запрашиваться контент, предугадать сложно.
0
Вы вообще за Уралом были когда-нибудь? На российском Дальнем Востоке были? Представляете себе, какие там расстояния? Если контент пойдет на Камчатку не через Новосибирск, а через Монголию, то это вообще будет не заметно — расстояние примерно одно и то же. Более того, для Дальнего Востока точки присутствия в том же Китае будут горазо выгоднее по целому ряду причин.
+2
Если CDN сделан грамотно, запрос пойдет в Москву.
Как в regexp, или в маршрутизации, если не сработает более конкретное правило «новосиб в новосиб», сработает более общее «россия в москву».
Как в regexp, или в маршрутизации, если не сработает более конкретное правило «новосиб в новосиб», сработает более общее «россия в москву».
0
Sign up to leave a comment.
Статические сайты: настройка и оптимизация