[Немојте] користити ЦДН

Скоро сваки чланак или алатка за оптимизацију брзине сајта има скромну клаузулу „користите ЦДН“. Генерално, ЦДН је мрежа за испоруку садржаја или мрежа за испоруку садржаја. Ми у Метход Лаб често наилазимо на питања клијената на ову тему. Сврха овог чланка је да разуме шта ЦДН може да обезбеди у смислу брзине учитавања сајта, који проблеми могу настати и у којим случајевима је употреба ЦДН-а оправдана.

[Немојте] користити ЦДН

Кашњења заокружена на слици су узрокована употребом ЦДН-а.

Мало историје

Као и многе технологије, ЦДН-ови су се појавили из нужде. Са развојем интернет канала међу корисницима интернета појавили су се онлајн видео сервиси. Наравно, видео садржај захтева редове величине више пропусног опсега у поређењу са редовним садржајем веб локације (слике, текст и ЦСС или ЈС код).

Када покушавате да емитујете видео ток паралелно са више клијената са једног сервера, Интернет канал сервера ће највероватније постати уско грло. По правилу, неколико хиљада нити је довољно да зачепи типичан серверски канал. Наравно, могу постојати и друга ограничења ресурса, али она тренутно нису важна. Такође је важно да је проширење канала сервера прескупо (а понекад и немогуће), а такође и непрактично. Оптерећење канала током емитовања ће бити циклично.

ЦДН савршено решава проблем ограничавања канала појединачног сервера. Клијенти се не повезују директно на сервер, већ на чворове у ЦДН мрежи. У идеалној ситуацији, сервер шаље један ток до ЦДН чвора, а затим мрежа користи сопствене ресурсе да испоручи овај ток многим корисницима. Са економске тачке гледишта, плаћамо само за стварно потрошене ресурсе (ово може бити пропусни опсег или саобраћај) и добијамо одличну скалабилност наше услуге. Коришћење ЦДН-а за испоруку тешког садржаја је потпуно оправдано и логично. Иако је вредно напоменути да највећи играчи у овом простору (нпр. Нетфлик) граде сопствене ЦДН-ове уместо да користе велике комерцијалне ЦДН-ове (Акамаи, Цлоудфларе, Фастли, итд.)

Како је веб еволуирао, саме веб апликације су постале сложеније и сложеније. Проблем брзине учитавања дошао је до изражаја. Љубитељи брзине веб локација брзо су идентификовали неколико великих проблема због којих су се веб странице споро учитавале. Једна од њих била су кашњења мреже (РТТ - време повратног пута или време пинга). Кашњења утичу на многе процесе учитавања веб локације: успостављање ТЦП везе, покретање ТЛС сесије, учитавање сваког појединачног ресурса (слика, ЈС датотека, ХТМЛ документ, итд.)

Проблем је погоршана чињеницом да при коришћењу ХТТП/1.1 протокола (пре појаве СПДИ, КУИЦ и ХТТП/2 ово је била једина опција), претраживачи отварају највише 6 ТЦП веза са једним хостом. Све ово је довело до прекида везе и неефикасног коришћења пропусног опсега канала. Проблем је делимично решен дељењем домена – стварањем додатних хостова за превазилажење ограничења броја веза.

Ту се појављује друга способност ЦДН-а – смањење латенције (РТТ) због великог броја тачака и близине чворова кориснику. Удаљеност овде игра одлучујућу улогу: брзина светлости је ограничена (око 200 км/сек у оптичком влакну). То значи да сваких 000 км путовања додаје 1000 мс кашњења или 5 мс РТТ-у. Ово је минимално време потребно за пренос, пошто постоје и кашњења на међуопреми. Пошто ЦДН обично зна како да кешира објекте на својим серверима, можемо имати користи од учитавања таквих објеката преко ЦДН-а. Неопходни услови за то: присуство објекта у кешу, близина ЦДН тачке до корисника у поређењу са сервером веб апликација (оригин сервер). Важно је разумети да географска близина ЦДН чвора не гарантује ниско кашњење. Рутирање између клијента и ЦДН-а може бити изграђено на такав начин да ће се клијент повезати са хостом у другој земљи, а могуће и на другом континенту. Овде долази до изражаја однос између телеком оператера и ЦДН сервиса (пееринг, везе, учешће у ИКС, итд.) и политика рутирања саобраћаја самог ЦДН-а. На пример, Цлоудфларе, када користи два почетна плана (бесплатан и јефтин), не гарантује испоруку садржаја са најближег хоста – домаћин ће бити изабран тако да постигне минималне трошкове.

Многе водеће интернет компаније привлаче интересовање јавности (веб програмере и власнике услуга) за тему брзине учитавања и перформанси веб странице. Међу овим компанијама су Иахоо (Ислов алат), АОЛ (ВебПагеТест) и Гоогле (Паге Спеед Инсигхтс сервис), које развијају сопствене препоруке за убрзање сајтова (пре свега се односе на оптимизацију клијената). Касније се појављују нови алати за тестирање брзине веб-сајта, који такође пружају савете за повећање брзине веб-сајта. Свака од ових услуга или додатака има доследну препоруку: „Користите ЦДН“. Смањење кашњења мреже обично се наводи као објашњење за ефекат ЦДН-а. Нажалост, нису сви спремни да схвате како се тачно постиже ефекат убрзања ЦДН-а и како се може измерити, па се препорука узима на веру и користи као постулат. У ствари, нису сви ЦДН-ови створени једнаки.

Коришћење ЦДН-а данас

Да би се проценила корисност коришћења ЦДН-ова, потребно их је класификовати. Шта се сада може наћи у пракси (примери у заградама, наравно, нису исцрпни):

  1. Бесплатан ЦДН за дистрибуцију ЈС библиотека (МакЦДН, Гоогле. Иандек).
  2. ЦДН услуга за оптимизацију клијената (на пример, Гоогле Фонтови за фонтове, Цлоудинари, Цлоудимаге за слике).
  3. ЦДН за статичку и оптимизацију ресурса у ЦМС-у (доступно у Битрик-у, ВордПресс-у и другима).
  4. ЦДН опште намене (СтацкПатх, ЦДНВидео, НГЕНИКС, Мегафон).
  5. ЦДН за убрзање веб странице (Цлоудфларе, Имперва, Аири).

Кључна разлика између ових типова је колико саобраћаја пролази кроз ЦДН. Типови 1-3 су испорука само дела садржаја: од једног захтева до неколико десетина (обично слика). Типови 4 и 5 су потпуни прокси саобраћај преко ЦДН-а.

У пракси то значи број веза које се користе за учитавање сајта. Са ХТТП/2, користимо једну ТЦП везу са хостом за обраду било ког броја захтева. Ако ресурсе поделимо на главни хост (оригин) и ЦДН, онда је потребно распоредити захтеве на неколико домена и креирати неколико ТЦП веза. Најгори случај је: ДНС (1 РТТ) + ТЦП (1 РТТ) + ТЛС (2-3 РТТ) = 6-7 РТТ. Ова формула не узима у обзир кашњења у мобилним мрежама за активацију радио канала уређаја (ако није био активан) и кашњења на торњу мобилне телефоније.

Ево како то изгледа на водопаду учитавања сајта (кашњења за повезивање са ЦДН-ом су истакнута на РТТ 150 мс):

[Немојте] користити ЦДН

Ако ЦДН покрива сав саобраћај на сајту (осим за услуге трећих страна), онда можемо да користимо једну ТЦП везу, штедећи кашњења при повезивању са додатним хостовима. Наравно, ово се односи на ХТТП/2 везе.

Даље разлике су одређене функционалношћу одређеног ЦДН-а - за први тип то је само хостовање статичне датотеке, за пети мења неколико типова садржаја сајта у сврху оптимизације.

ЦДН могућности за убрзање веб странице

Хајде да опишемо читав низ ЦДН могућности за убрзање сајтова, без обзира на функционалност појединих типова ЦДН-а, а затим да видимо шта је имплементирано у сваком од њих.

1. Компресија текстуалних ресурса

Најосновнија и најразумљивија карактеристика, али често лоше имплементирана. Сви ЦДН-ови декларишу присуство компресије као своју функцију убрзања. Али ако погледате детаљније, недостаци постају јасни:

  • могу се користити ниски степени за динамичку компресију - 5-6 (на пример, за гзип максимум је 9);
  • статичка компресија (датотеке у кешу) не користи додатне функције (на пример, зопфи или бротли са степеном 11)
  • не постоји подршка за ефикасну бротли компресију (уштеда око 20% у поређењу са гзип-ом).

Ако користите ЦДН, вреди проверити ових неколико тачака: узмите датотеку која је дошла са ЦДН-а, снимите њену компримовану величину и ручно је компресујте ради поређења (можете да користите неку онлајн услугу са подршком за бротли, на пример вссзхат.рф).

2. Подешавање заглавља за кеширање клијента

Такође једноставна функција за убрзавање: додајте заглавља за кеширање садржаја од стране клијента (прегледача). Најновије заглавље је контрола кеша, застарело истиче. Додатно, Етаг се може користити. Главна ствар је да је максимална старост контроле кеша довољно велика (од месец дана или више).

ЦДН-ови могу смањити вредност максималне старости, приморавајући корисника да чешће поново учитава статички садржај. Није јасно са чиме је то повезано: жељом да се повећа саобраћај на мрежи или повећа компатибилност са сајтовима који не знају како да ресетују кеш. На пример, подразумевано време кеширања Цлоудфларе заглавља је 1 сат, што је веома мало за непроменљиве статичке податке.

3. Оптимизација слике

Пошто ЦДН преузима функције кеширања и сервирања слика, било би логично да их оптимизујемо на ЦДН страни и да их у овом облику сервирамо корисницима. Одмах да резервишемо да је ова функција доступна само за ЦДН типове 2, 3 и 5.

Можете оптимизовати слике на различите начине: коришћењем напредних формата компресије (као што је ВебП), ефикаснијих кодера (МозЈПЕГ) или једноставно чишћењем непотребних метаподатака.

Генерално, постоје две врсте таквих оптимизација: са губитком квалитета и без губитка квалитета. ЦДН-ови обично настоје да користе оптимизацију без губитака како би избегли могуће жалбе купаца на промене у квалитету слике. У таквим условима добитак ће бити минималан. У стварности, често је ниво квалитета ЈПЕГ много већи него што је потребно и можете безбедно да поново компресујете са нижим нивоом квалитета без угрожавања корисничког искуства. С друге стране, тешко је одредити ниво квалитета и подешавања универзално за све могуће веб апликације, па ЦДН-ови користе конзервативнија подешавања у односу на она која се могу применити узимајући у обзир контекст (намена слика, тип веб апликације). , итд.)

4. Оптимизација ТЛС везе

Већина саобраћаја данас иде преко ТЛС веза, што значи да трошимо додатно време на ТЛС преговоре. Недавно су развијене нове технологије које убрзавају овај процес. На пример, ово је ЕЦ криптографија, ТЛС 1.3, кеш сесије и тикети, убрзање хардверског шифровања (АЕС-НИ) итд. Исправно подешавање ТЛС-а може смањити време везе на 0-1 РТТ (не рачунајући ДНС и ТЦП).

Са савременим софтвером није тешко самостално имплементирати такве праксе.

Не примењују сви ЦДН-ови најбоље праксе за ТЛС, ово можете проверити мерењем времена ТЛС везе (на пример, у Вебпагетест-у). Идеално за нову везу - 1РТТ, 2РТТ - просечан ниво, 3РТТ и више - лош.

Такође треба напоменути да чак и када се користи ТЛС на нивоу ЦДН-а, сервер са нашом веб апликацијом такође мора да обрађује ТЛС, али са ЦДН стране, јер саобраћај између сервера и ЦДН-а пролази кроз јавну мрежу. У најгорем случају, добићемо двоструко кашњење ТЛС везе (прво до ЦДН хоста, друго између њега и нашег сервера).

За неке апликације вреди обратити пажњу на безбедносна питања: саобраћај се обично дешифрује на ЦДН чворовима, а ово је потенцијална прилика за пресретање саобраћаја. Опција рада без откривања саобраћаја се обично нуди у врхунским тарифним плановима уз додатну накнаду.

5. Смањите кашњење везе

Главна предност ЦДН-а о којој сви говоре: ниско кашњење (мање растојање) између ЦДН хоста и корисника. Постиже се креирањем географски распоређене мрежне архитектуре, у којој се хостови налазе у тачкама концентрације корисника (градови, тачке размене саобраћаја итд.)

У пракси, приоритети за различите мреже могу бити у одређеним регионима. На пример, руски ЦДН ће имати више тачака присуства у Русији. Амерички ће пре свега развијати мрежу у САД. На пример, један од највећих ЦДН Цлоудфларе има само 2 тачке у Русији - Москву и Санкт Петербург. То јест, можемо да уштедимо максимално око 10 мс кашњења у поређењу са директним пласманом у Москви.

Већина западних ЦДН-ова уопште нема пунктове у Русији. Повезивањем са њима можете само повећати кашњења за своју руску публику.

6. Оптимизација садржаја (минификација, структурне промене)

Најсложенија и технолошки најнапреднија тачка. Промена садржаја током испоруке може бити веома ризична. Чак и ако узмемо умањивање: смањење изворног кода (због додатних размака, неважних структура, итд.) може утицати на његове перформансе. Ако говоримо о озбиљнијим променама – премештању ЈС кода на крај ХТМЛ-а, спајању датотека итд. – ризик од нарушавања функционалности сајта је још већи.

Дакле, само неки ЦДН-ови типа 5 то раде. Наравно, неће бити могуће аутоматизовати све промене које су потребне да би се ствари убрзале – потребна је ручна анализа и оптимизација. На пример, уклањање неискоришћеног или дуплираног кода је ручни задатак.

По правилу, све такве оптимизације контролишу подешавања, а најопасније су подразумевано онемогућене.

Подршка за могућности убрзања према ЦДН типу

Дакле, хајде да погледамо које потенцијалне могућности убрзања пружају различите врсте ЦДН-ова.

Ради погодности, понављамо класификацију.

  1. Бесплатан ЦДН за дистрибуцију ЈС библиотека (МакЦДН, Гоогле. Иандек).
  2. ЦДН услуга за оптимизацију клијената (на пример, Гоогле Фонтови за фонтове, Цлоудинари, Цлоудимаге за слике).
  3. ЦДН за статичку и оптимизацију ресурса у ЦМС-у (доступно у Битрик-у, ВордПресс-у и другима).
  4. ЦДН опште намене (СтацкПатх, ЦДНВидео, НГЕНИКС, Мегафон).
  5. ЦДН за убрзање веб странице (Цлоудфларе, Имперва, Аири).

Сада упоредимо карактеристике и типове ЦДН-а.

Прилика
Tip 1
Tip 2
Tip 3
Tip 4
Tip 5

Компресија текста
+–
-
+–
+–
+

Заглавља кеша
+
+
+
+
+

Слике
-
+–
+–
-
+

ТЛС
-
-
-
+–
+

Кашњења
-
-
-
+
+

Садржина
-
-
-
-
+

У овој табели, „+“ се користи за означавање пуне подршке, „–“ није подршка, а „+–“ је делимична подршка. Наравно, у стварности може доћи до одступања од ове табеле (на пример, неки ЦДН опште намене ће имплементирати функције за оптимизацију слика), али за општу идеју то је корисно.

Резултати

Надамо се да ћете након читања овог чланка имати јаснију слику о препоруци „користите ЦДН“ да бисте убрзали своје веб локације.

Као иу сваком послу, не можете веровати маркетиншким обећањима било које услуге. Ефекат треба мерити и тестирати у реалним условима. Ако већ користите ЦДН, проверите његову ефикасност користећи критеријуме описане у чланку.

Могуће је да тренутно коришћење ЦДН-а успорава време учитавања ваше веб локације.

Као општу препоруку, можемо се фокусирати на следеће: проучите своју публику, одредите њен географски опсег. Ако је ваша главна публика концентрисана у радијусу од 1-2 хиљаде километара, ЦДН вам није потребан за његову главну сврху - смањење кашњења. Уместо тога, можете поставити свој сервер ближе корисницима и правилно га конфигурисати, добијајући већину оптимизација описаних у чланку (бесплатно и трајно).

У случају да је ваша публика заиста географски распоређена (радијус већи од 3000 километара), коришћење квалитетног ЦДН-а ће заиста бити корисно. Међутим, морате унапред да разумете шта тачно ваш ЦДН може да убрза (погледајте табелу могућности и њихов опис). Међутим, убрзање веб странице и даље остаје сложен задатак који се не може решити повезивањем ЦДН-а. Поред наведених оптимизација, иза ЦДН-а остају најефикаснији начини убрзања: оптимизација серверског дела, напредне измене клијентског дела (уклањање неискоришћеног кода, оптимизација процеса рендеровања, рад са садржајем, фонтовима, прилагодљивост итд. )

Извор: ввв.хабр.цом

Додај коментар