[Ayaw] paggamit ug CDN

Hapit matag artikulo o himan alang sa pag-optimize sa katulin sa site adunay kasarangan nga clause nga "gamit ang usa ka CDN." Sa kinatibuk-an, ang CDN usa ka network sa paghatud sa sulud o network sa paghatud sa sulud. Kami sa Method Lab kanunay nga makasugat og mga pangutana gikan sa mga kliyente bahin niini nga hilisgutan; ang uban niini makahimo sa ilang kaugalingong CDN. Ang katuyoan niini nga artikulo mao ang pagsabut kung unsa ang mahatag sa usa ka CDN sa mga termino sa katulin sa pagkarga sa site, kung unsang mga problema ang mahimong motumaw, ug kung diin nga mga kaso ang paggamit sa usa ka CDN makatarunganon.

[Ayaw] paggamit ug CDN

Ang mga paglangay nga gilingin sa hulagway tungod sa paggamit sa CDN.

Usa ka gamay nga kasaysayan

Sama sa daghang mga teknolohiya, ang mga CDN migawas sa panginahanglan. Sa pag-uswag sa mga channel sa Internet taliwala sa mga tiggamit sa Internet, nagpakita ang mga serbisyo sa online nga video. Natural, ang sulud sa video nanginahanglan mga order sa kadako nga mas bandwidth kung itandi sa naandan nga sulud sa website (mga litrato, teksto, ug CSS o JS code).

Kung mosulay sa pagsibya sa usa ka video stream nga managsama sa daghang mga kliyente gikan sa usa ka server, ang channel sa Internet sa server lagmit nga mahimong bottleneck. Ingon sa usa ka lagda, ang pipila ka libo nga mga hilo igo na nga makabara sa usa ka tipikal nga channel sa server. Siyempre, tingali adunay uban nga mga limitasyon sa kapanguhaan, apan dili kini importante karon. Importante usab nga ang pagpalapad sa channel sa server mahal kaayo (ug usahay imposible), ug dili usab praktikal. Ang load sa channel sa panahon sa mga sibya mahimong cyclical.

Ang problema sa paglimit sa channel sa usa ka indibidwal nga server hingpit nga nasulbad sa CDN. Ang mga kliyente dili direktang magkonektar sa server, apan sa mga node sa CDN network. Sa usa ka sulundon nga kahimtang, ang server nagpadala usa ka sapa sa CDN node, ug dayon ang network naggamit sa kaugalingon nga mga kapanguhaan aron maihatag kini nga sapa sa daghang mga tiggamit. Gikan sa punto sa ekonomiya, nagbayad lang kami sa mga kapanguhaan nga aktuwal nga gigamit (kini mahimo nga bandwidth o trapiko) ug makakuha og maayo nga scalability sa among serbisyo. Ang paggamit sa usa ka CDN sa paghatud sa bug-at nga sulud hingpit nga makatarunganon ug makatarunganon. Bisan kung angay nga hinumdoman nga ang pinakadako nga magdudula sa kini nga wanang (eg Netflix) nagtukod sa ilang kaugalingon nga mga CDN imbis nga mogamit mga dagkong komersyal nga CDN (Akamai, Cloudflare, Fastly, ug uban pa)

Samtang nag-uswag ang web, ang mga aplikasyon sa web mismo nahimong mas komplikado ug komplikado. Ang problema sa katulin sa pagkarga mitungha sa unahan. Ang mga mahiligon sa katulin sa website dali nga nakaila sa daghang dagkong mga problema nga hinungdan sa hinay nga pagkarga sa mga website. Usa niini mao ang pagkalangan sa network (RTT - round trip time o ping time). Ang mga paglangan makaapekto sa daghang mga proseso sa pagkarga sa website: paghimo og koneksyon sa TCP, pagsugod sa sesyon sa TLS, pagkarga sa matag indibidwal nga kapanguhaan (larawan, JS file, HTML nga dokumento, ug uban pa)

Ang problema gipasamot sa kamatuoran nga sa paggamit sa HTTP/1.1 protocol (sa wala pa ang pag-abot sa SPDY, QUIC ug HTTP/2 mao lamang kini nga kapilian), ang mga browser nag-abli sa dili labaw pa kay sa 6 TCP koneksyon sa usa ka host. Kining tanan misangpot sa downtime sa koneksyon ug dili maayo nga paggamit sa bandwidth sa channel. Ang problema partially nasulbad pinaagi sa domain sharding - ang paghimo sa dugang nga mga panon sa pagbuntog sa limitasyon sa gidaghanon sa mga koneksyon.

Dinhi makita ang ikaduha nga abilidad sa CDN - ang pagkunhod sa latency (RTT) tungod sa daghang gidaghanon sa mga puntos ug ang kaduol sa mga node sa tiggamit. Ang gilay-on adunay hinungdanon nga papel dinhi: ang katulin sa kahayag limitado (mga 200 km/sec sa optical fiber). Nagpasabot kini nga ang matag 000 km sa pagbiyahe nagdugang 1000 ms sa paglangan o 5 ms sa RTT. Kini ang minimum nga oras nga gikinahanglan alang sa transmission, tungod kay adunay mga paglangan usab sa intermediate nga kagamitan. Tungod kay ang usa ka CDN kasagaran nahibal-an kung giunsa ang pag-cache sa mga butang sa mga server niini, makabenepisyo kita gikan sa pagkarga sa mga butang pinaagi sa usa ka CDN. Gikinahanglan nga mga kondisyon alang niini: ang presensya sa butang sa cache, ang kaduol sa CDN nagpunting sa user kon itandi sa web application server (original server). Importante nga masabtan nga ang geographic nga kaduol sa usa ka CDN node dili garantiya sa ubos nga latency. Ang ruta tali sa kliyente ug sa CDN mahimong matukod sa paagi nga ang kliyente magkonektar sa usa ka host sa laing nasud, ug posible sa laing kontinente. Dinhi diin ang relasyon tali sa mga operator sa telecom ug sa serbisyo sa CDN (peering, koneksyon, pag-apil sa IX, ug uban pa) ug ang polisiya sa pag-ruta sa trapiko sa CDN mismo nagsugod. Pananglitan, Cloudflare, sa diha nga ang paggamit sa duha ka inisyal nga mga plano (libre ug barato), dili garantiya sa paghatod sa sulod gikan sa labing duol nga host - ang host mapili aron makab-ot ang minimum nga gasto.

Daghang nanguna nga mga kompanya sa Internet ang nakadani sa interes sa publiko (mga developer sa web ug mga tag-iya sa serbisyo) sa hilisgutan sa katulin sa pagkarga ug paghimo sa website. Lakip sa kini nga mga kompanya mao ang Yahoo (Yslow tool), AOL (WebPageTest) ug Google (Page Speed ​​​​Insights service), nga nagpalambo sa ilang kaugalingon nga mga rekomendasyon alang sa pagpadali sa mga site (panguna nga adunay kalabotan sa pag-optimize sa kliyente). Sa ulahi, makita ang bag-ong mga himan sa pagsulay sa tulin sa website, nga naghatag usab mga tip sa pagdugang sa katulin sa website. Ang matag usa niini nga mga serbisyo o plugins adunay makanunayon nga rekomendasyon: "Paggamit ug CDN." Ang pagkunhod sa latency sa network kasagarang gikutlo isip katin-awan sa epekto sa CDN. Ikasubo, dili tanan andam nga masabtan kung giunsa ang pagpadali nga epekto sa CDN nakab-ot ug kung giunsa kini masukod, busa ang rekomendasyon gikuha sa pagtuo ug gigamit ingon usa ka postulate. Sa tinuud, dili tanan nga mga CDN gihimo nga managsama.

Paggamit sa usa ka CDN Karon

Aron masusi ang kapuslanan sa paggamit sa mga CDN, kini kinahanglan nga klasipikasyon. Unsa ang makit-an karon sa praktis (ang mga pananglitan sa mga bracket, siyempre, dili kompleto):

  1. Libre nga CDN alang sa pag-apod-apod sa mga librarya sa JS (MaxCDN, Google. Yandex).
  2. CDN sa mga serbisyo alang sa pag-optimize sa kliyente (pananglitan, Google Fonts para sa mga font, Cloudinary, Cloudimage para sa mga imahe).
  3. CDN alang sa static ug resource optimization sa CMS (anaa sa Bitrix, WordPress ug uban pa).
  4. Kinatibuk-ang katuyoan CDN (StackPath, CDNVideo, NGENIX, Megafon).
  5. CDN alang sa pagpadali sa website (Cloudflare, Imperva, Airi).

Ang yawe nga kalainan tali sa kini nga mga tipo mao ang kadaghan sa trapiko nga moagi sa CDN. Ang mga tipo 1-3 mao ang paghatud sa bahin lamang sa sulud: gikan sa usa ka hangyo hangtod sa daghang dosena (kasagaran mga litrato). Ang mga tipo 4 ug 5 maoy bug-os nga proxying sa trapiko pinaagi sa CDN.

Sa praktis, kini nagpasabut sa gidaghanon sa mga koneksyon nga gigamit sa pagkarga sa site. Uban sa HTTP/2, migamit kami og usa ka koneksyon sa TCP sa host aron maproseso ang bisan unsang gidaghanon sa mga hangyo. Kung atong bahinon ang mga kahinguhaan ngadto sa nag-unang host (gigikanan) ug CDN, nan gikinahanglan ang pag-apod-apod sa mga hangyo sa daghang mga dominyo ug paghimo og daghang koneksyon sa TCP. Ang pinakagrabe nga kaso mao ang: DNS (1 RTT) + TCP (1 RTT) + TLS (2-3 RTT) = 6-7 RTT. Kini nga pormula wala magtagad sa mga paglangan sa mga mobile network alang sa pagpaaktibo sa channel sa radyo sa aparato (kung dili kini aktibo) ug mga paglangan sa cell tower.

Ania kung unsa ang hitsura sa nagkarga nga talon sa site (ang mga latency alang sa pagkonekta sa CDN gipasiugda sa RTT 150 ms):

[Ayaw] paggamit ug CDN

Kung ang CDN naglangkob sa tanan nga trapiko sa site (gawas sa mga serbisyo sa ikatulo nga partido), nan mahimo namong gamiton ang usa ka koneksyon sa TCP, nga makaluwas sa mga paglangan sa pagkonektar sa dugang nga mga host. Siyempre, kini magamit sa HTTP/2 koneksyon.

Ang dugang nga mga kalainan gitino pinaagi sa pag-andar sa usa ka partikular nga CDN - alang sa una nga tipo kini nag-host lang sa usa ka static nga file, alang sa ikalima kini nagbag-o sa daghang mga lahi sa sulud sa site alang sa katuyoan sa pag-optimize.

Mga kapabilidad sa CDN alang sa pagpadali sa website

Atong ihulagway ang bug-os nga han-ay sa mga kapabilidad sa CDN alang sa pagpadali sa mga site, nga walay pagtagad sa pagpaandar sa tagsa-tagsa nga matang sa CDN, ug unya tan-awon kung unsa ang gipatuman sa matag usa niini.

1. Pag-compress sa mga kapanguhaan sa teksto

Ang labing sukaranan ug masabtan nga bahin, apan kanunay dili maayo nga gipatuman. Ang tanan nga mga CDN nagpahayag sa presensya sa compression isip ilang pagpadali nga bahin. Apan kung imong tan-awon ang mas detalyado, ang mga kakulangan mahimong klaro:

  • ubos nga grado alang sa dinamikong compression mahimong gamiton - 5-6 (pananglitan, alang sa gzip ang maximum mao ang 9);
  • Ang static compression (mga file sa cache) wala mogamit dugang nga mga bahin (pananglitan, zopfi o brotli nga adunay degree 11)
  • walay suporta alang sa episyente nga brotli compression (pagtipig mga 20% kumpara sa gzip).

Kung mogamit ka og CDN, angay nga susihon kining pipila ka mga punto: kuhaa ang file nga gikan sa CDN, irekord ang gi-compress nga gidak-on niini ug i-compress kini nga mano-mano alang sa pagtandi (mahimo nimong gamiton ang pipila ka serbisyo sa online nga adunay suporta sa brotli, pananglitan vsszhat.rf).

2. Pagbutang sa mga ulohan sa cache sa kliyente

Usa usab ka yano nga pagpadali nga bahin: pagdugang mga ulohan alang sa pag-cache sa sulud sa kliyente (browser). Ang pinakabag-o nga header mao ang cache-control, ang outdated nga usa matapos. Dugang pa, ang Etag mahimong magamit. Ang nag-unang butang mao nga ang max-age sa cache-control igo na nga dako (gikan sa usa ka bulan o labaw pa) Kung andam ka nga i-cache ang kapanguhaan kutob sa mahimo, mahimo nimong idugang ang dili mausab nga kapilian.

Mahimong ipaubos sa mga CDN ang labing taas nga kantidad sa edad, nga mapugos ang tiggamit nga i-reload ang static nga sulud sa kanunay. Dili klaro kung unsa kini konektado: ang tinguha nga madugangan ang trapiko sa network o madugangan ang pagkaangay sa mga site nga wala mahibal-an kung giunsa ang pag-reset sa cache. Pananglitan, ang default Cloudflare header cache time mao ang 1 ka oras, nga ubos kaayo alang sa dili mausab nga static data.

3. Pag-optimize sa imahe

Tungod kay ang CDN nagkuha sa mga gimbuhaton sa pag-cache ug pag-alagad sa mga imahe, makatarunganon nga i-optimize kini sa kilid sa CDN ug isilbi kini sa mga tiggamit sa kini nga porma. Maghimo dayon kita og reserbasyon nga kini nga bahin magamit ra alang sa mga tipo sa CDN 2, 3 ug 5.

Mahimo nimong ma-optimize ang mga imahe sa lainlaing mga paagi: gamit ang mga advanced nga format sa compression (sama sa WebP), labi ka episyente nga mga encoder (MozJPEG), o yano nga paglimpyo sa wala kinahanglana nga metadata.

Sa kinatibuk-an, adunay duha ka matang sa ingon nga mga pag-optimize: nga adunay pagkawala sa kalidad ug walay pagkawala sa kalidad. Ang mga CDN kasagarang naningkamot sa paggamit sa lossless optimization aron malikayan ang posibleng mga reklamo sa customer mahitungod sa mga pagbag-o sa kalidad sa imahe. Sa ingon nga mga kahimtang, ang ganansya gamay ra. Sa tinuud, kasagaran ang lebel sa kalidad sa JPEG labi ka taas kaysa kinahanglan ug luwas ka nga ma-recompress sa usa ka ubos nga lebel sa kalidad nga dili ikompromiso ang kasinatian sa gumagamit. Sa laing bahin, lisud ang pagtino sa lebel sa kalidad ug mga setting sa tibuok kalibutan para sa tanang posibleng mga web application, mao nga ang mga CDN naggamit ug mas konserbatibo nga mga setting kumpara niadtong mahimong magamit nga gikonsiderar ang konteksto (katuyoan sa mga hulagway, matang sa web application. , ug uban pa)

4. Pag-optimize sa koneksyon sa TLS

Kadaghanan sa trapiko karon nagbiyahe sa mga koneksyon sa TLS, nga nagpasabut nga naggugol kami og dugang nga oras sa negosasyon sa TLS. Karong bag-o, ang mga bag-ong teknolohiya naugmad aron mapadali kini nga proseso. Pananglitan, kini mao ang EC cryptography, TLS 1.3, session cache ug mga tiket, hardware encryption acceleration (AES-NI), ug uban pa. Ang husto nga pag-set sa TLS makapakunhod sa oras sa koneksyon ngadto sa 0-1 RTT (dili pag-ihap sa DNS ug TCP ).

Uban sa modernong software, dili lisud ang pagpatuman sa ingon nga mga praktis sa imong kaugalingon.

Dili tanang CDN ang nagpatuman sa TLS nga labing maayong gawi; masusi nimo kini pinaagi sa pagsukod sa oras sa koneksyon sa TLS (pananglitan, sa Webpagetest). Maayo alang sa usa ka bag-ong koneksyon - 1RTT, 2RTT - average nga lebel, 3RTT ug daghan pa - dili maayo.

Kinahanglan usab nga hinumdoman nga bisan kung gigamit ang TLS sa lebel sa CDN, ang server nga adunay among aplikasyon sa web kinahanglan usab nga magproseso sa TLS, apan gikan sa kilid sa CDN, tungod kay ang trapiko tali sa server ug CDN moagi sa publiko nga network. Sa pinakagrabe nga kaso, makadawat kami og doble nga paglangan sa koneksyon sa TLS (ang una sa host sa CDN, ang ikaduha tali niini ug sa among server).

Alang sa pipila nga mga aplikasyon, angay nga hatagan pagtagad ang mga isyu sa seguridad: ang trapiko kasagarang gi-decrypted sa mga CDN node, ug kini usa ka potensyal nga oportunidad alang sa interception sa trapiko. Ang kapilian sa pagtrabaho nga wala’y pagbutyag sa trapiko kasagarang gitanyag sa taas nga mga plano sa taripa alang sa dugang nga bayad.

5. Bawasan ang mga paglangay sa koneksyon

Ang nag-unang kaayohan sa CDN nga gihisgutan sa tanan: ubos nga latency (dili kaayo gilay-on) tali sa CDN host ug sa user. Nakab-ot pinaagi sa paghimo sa usa ka geographically-apod-apod nga arkitektura sa network, diin ang mga host nahimutang sa mga punto sa konsentrasyon sa mga tiggamit (mga siyudad, traffic exchange point, ug uban pa)

Sa praktis, ang mga prayoridad alang sa lain-laing mga network mahimong sa piho nga mga rehiyon. Pananglitan, ang mga CDN sa Russia adunay daghang mga punto sa presensya sa Russia. Ang mga Amerikano una sa tanan magpalambo sa network sa USA. Pananglitan, ang usa sa pinakadako nga CDN Cloudflare adunay 2 puntos lamang sa Russia - Moscow ug St. Sa ato pa, makatipig kami usa ka labing taas nga mga 10 ms sa latency kumpara sa direkta nga pagbutang sa Moscow.

Kadaghanan sa Western CDNs walay mga punto sa Russia sa tanan. Pinaagi sa pagkonektar kanila, mahimo ra nimo madugangan ang mga paglangan alang sa imong mamiminaw sa Russia.

6. Pag-optimize sa sulud (minification, pagbag-o sa istruktura)

Ang labing komplikado ug teknolohikal nga abante nga punto. Ang pagbag-o sa sulud sa panahon sa paghatud mahimong peligro kaayo. Bisan kung magkuha kami og minification: ang pagkunhod sa source code (tungod sa dugang nga mga luna, dili importante nga mga istruktura, ug uban pa) mahimong makaapekto sa pasundayag niini. Kung maghisgot kita bahin sa labi ka grabe nga mga pagbag-o - pagbalhin sa JS code hangtod sa katapusan sa HTML, paghiusa sa mga file, ug uban pa - ang peligro nga makabalda sa pagpaandar sa site labi ka taas.

Busa, pipila lang ka tipo nga 5 CDN ang naghimo niini. Siyempre, dili posible nga i-automate ang tanan nga mga pagbag-o nga gikinahanglan aron mapadali ang mga butang-kinahanglan ang manwal nga pagtuki ug pag-optimize. Pananglitan, ang pagtangtang sa wala magamit o doble nga code usa ka manual nga buluhaton.

Ingon sa usa ka lagda, ang tanan nga ingon nga mga pag-optimize gikontrol sa mga setting ug ang labing delikado nga mga gibabagan pinaagi sa default.

Suporta alang sa mga kapabilidad sa pagpadali pinaagi sa tipo sa CDN

Mao nga atong tan-awon kung unsa ang potensyal nga mga oportunidad sa pagpadali nga gihatag sa lainlaing mga lahi sa CDN.

Alang sa kasayon, among gisubli ang klasipikasyon.

  1. Libre nga CDN alang sa pag-apod-apod sa mga librarya sa JS (MaxCDN, Google. Yandex).
  2. CDN sa mga serbisyo alang sa pag-optimize sa kliyente (pananglitan, Google Fonts para sa mga font, Cloudinary, Cloudimage para sa mga imahe).
  3. CDN alang sa static ug resource optimization sa CMS (anaa sa Bitrix, WordPress ug uban pa).
  4. Kinatibuk-ang katuyoan CDN (StackPath, CDNVideo, NGENIX, Megafon).
  5. CDN alang sa pagpadali sa website (Cloudflare, Imperva, Airi).

Karon atong itandi ang mga bahin ug matang sa CDN.

Abilidad
Type 1
Type 2
Type 3
Type 4
Type 5

Pag-compress sa teksto
+–
-
+–
+–
+

Mga ulohan sa cache
+
+
+
+
+

Mga hulagway
-
+–
+–
-
+

TLS
-
-
-
+–
+

Mga paglangan
-
-
-
+
+

Kaundan
-
-
-
-
+

Niini nga lamesa, ang "+" gigamit sa pagpaila sa hingpit nga suporta, "-" walay suporta, ug ang "+–" kay partial nga suporta. Siyempre, mahimo nga adunay mga pagtipas gikan niini nga lamesa sa tinuud (pananglitan, ang pipila nga kasagarang katuyoan nga CDN magpatuman sa mga bahin alang sa pag-optimize sa mga imahe), apan alang sa usa ka kinatibuk-ang ideya kini mapuslanon.

Mga resulta

Unta, pagkahuman sa pagbasa niini nga artikulo makabaton ka usa ka mas klaro nga litrato bahin sa rekomendasyon nga "paggamit usa ka CDN" aron mapadali ang imong mga site.

Sama sa bisan unsang negosyo, dili ka makatuo sa mga saad sa pagpamaligya sa bisan unsang serbisyo. Ang epekto kinahanglang sukdon ug sulayan ubos sa tinuod nga kondisyon. Kung naggamit ka na sa usa ka CDN, susiha kini alang sa pagkaepektibo gamit ang mga pamatasan nga gihulagway sa artikulo.

Posible nga ang paggamit sa usa ka CDN karon nagpahinay sa oras sa pagkarga sa imong site.

Isip usa ka kinatibuk-ang rekomendasyon, mahimo natong ipunting ang mosunod: tun-i ang imong mamiminaw, tinoa ang geographic nga sakup niini. Kung ang imong nag-unang mamiminaw gikonsentrar sulod sa radius nga 1-2 ka libo ka kilometro, dili nimo kinahanglan ang usa ka CDN alang sa panguna nga katuyoan niini - ang pagkunhod sa latency. Hinuon, mahimo nimong ibutang ang imong server nga mas duol sa imong mga tiggamit ug i-configure kini sa husto, makuha ang kadaghanan sa mga pag-optimize nga gihulagway sa artikulo (libre ug permanente).

Kung ang imong mamiminaw tinuod nga giapod-apod sa heyograpiya (radius nga labaw sa 3000 kilometros), ang paggamit sa usa ka kalidad nga CDN mapuslanon gyud. Bisan pa, kinahanglan nimo nga masabtan daan kung unsa gyud ang mapadali sa imong CDN (tan-awa ang talaan sa mga kapabilidad ug ang ilang paghulagway). Bisan pa, ang pagpadali sa website nagpabilin nga usa ka komplikado nga buluhaton nga dili masulbad pinaagi sa pagkonektar sa usa ka CDN. Gawas pa sa mga pag-optimize sa ibabaw, ang labing epektibo nga paagi sa pagpadali nagpabilin sa luyo sa CDN: pag-optimize sa bahin sa server, mga advanced nga pagbag-o sa bahin sa kliyente (pagtangtang sa wala magamit nga code, pag-optimize sa proseso sa pag-render, pagtrabaho kauban ang sulud, font, pagkapasibo, ug uban pa. )

Source: www.habr.com

Idugang sa usa ka comment