Pag-host sa kaugalingon nga mga kapanguhaan sa ikatulo nga partido: ang maayo, ang daotan, ang daotan

Sa bag-ohay nga mga tuig, nagkadaghan nga mga plataporma alang sa pag-optimize sa mga proyekto sa unahan ang nagtanyag mga oportunidad alang sa pag-host sa kaugalingon o pag-proxy sa mga kapanguhaan sa ikatulo nga partido. Gitugotan ka sa Akamai nga magtakda piho nga mga parameter alang sa kaugalingon nga nahimo nga mga URL. Ang Cloudflare adunay teknolohiya sa Edge Workers. Mahimo ang Fasterzine pagsulat pag-usab Mga URL sa mga panid aron kini magpunting sa mga kapanguhaan sa ikatulo nga partido nga nahimutang sa panguna nga domain sa site.

Pag-host sa kaugalingon nga mga kapanguhaan sa ikatulo nga partido: ang maayo, ang daotan, ang daotan

Kung nahibal-an nimo nga ang mga serbisyo sa ikatulo nga partido nga gigamit sa imong proyekto dili kanunay magbag-o, ug nga ang proseso sa paghatud niini sa mga kliyente mahimong mapauswag, nan tingali naghunahuna ka bahin sa pag-proxy sa ingon nga mga serbisyo. Uban niini nga pamaagi, mahimo nimong madala kini nga mga kapanguhaan nga mas duol sa imong mga tiggamit ug makakuha og mas hingpit nga pagkontrol sa ilang pag-cache sa kilid sa kliyente. Kini, dugang pa, nagtugot kanimo sa pagpanalipod sa mga tiggamit gikan sa mga kasamok nga gipahinabo sa "pag-crash" sa usa ka serbisyo sa ikatulo nga partido o pagkadaot sa pasundayag niini.

Maayo: Mas maayo nga performance

Ang pag-host sa kaugalingon sa mga kahinguhaan sa uban nagpauswag sa pasundayag sa klaro kaayo nga paagi. Ang browser dili kinahanglan nga mag-access sa DNS pag-usab, dili kinahanglan nga magtukod og koneksyon sa TCP ug maghimo usa ka TLS handshake sa usa ka third-party nga domain. Imong makita kon sa unsang paagi ang pag-host sa kaugalingon sa mga kahinguhaan sa laing tawo makaapekto sa performance pinaagi sa pagtandi sa mosunod nga duha ka numero.

Pag-host sa kaugalingon nga mga kapanguhaan sa ikatulo nga partido: ang maayo, ang daotan, ang daotan
Ang mga kapanguhaan sa ikatulo nga partido gi-download gikan sa gawas nga mga gigikanan (gikuha gikan sa gikan dinhi)

Pag-host sa kaugalingon nga mga kapanguhaan sa ikatulo nga partido: ang maayo, ang daotan, ang daotan
Ang mga kapanguhaan sa ikatulo nga partido gitipigan sa parehas nga lugar sama sa ubang mga materyal sa site (gikuha gikan sa gikan dinhi)

Ang sitwasyon gipauswag usab sa kamatuoran nga ang browser mogamit sa abilidad sa multiplex ug pag-prioritize sa data gikan sa HTTP/2 nga koneksyon nga na-establisar na sa main domain.

Kung dili ka mag-host sa mga kahinguhaan sa ikatulo nga partido, unya tungod kay makarga sila gikan sa usa ka domain nga lahi sa panguna, dili sila mahimong unahon. Kini ang hinungdan nga sila makigkompetensya sa usag usa alang sa bandwidth sa kliyente. Mahimong moresulta kini sa mga oras sa pagkarga alang sa sulud nga kritikal sa paghimo sa usa ka panid nga labi ka taas kaysa kung unsa ang mahimo nga makab-ot sa ilawom sa maayo nga mga kahimtang. dinhi pakigpulong sa HTTP/2 prioritization nga nagpatin-aw sa tanan niini nga maayo kaayo.

Mahimong hunahunaon nga ang paggamit sa mga hiyas sa mga link sa gawas nga mga kapanguhaan preconnect makatabang sa pagsulbad sa problema. Bisan pa, kung adunay daghan kaayo niini nga mga link sa lainlaing mga dominyo, mahimo gyud nga ma-overload ang linya sa komunikasyon sa labing hinungdanon nga higayon.

Kung ikaw mismo ang nag-host sa mga kapanguhaan sa ikatulo nga partido, mahimo nimong kontrolon kung giunsa kini nga mga kapanguhaan gihatag sa kliyente. Sa ato pa, naghisgot kami bahin sa mosunod:

  • Mahimo nimong masiguro nga ang data compression algorithm nga labing haum sa matag browser gigamit (Brotli/gzip).
  • Mahimo nimong dugangan ang oras sa pag-cache alang sa mga kapanguhaan nga kasagaran dili kaayo taas, bisan sa labing inila nga mga provider (pananglitan, ang katumbas nga kantidad alang sa tag sa GA gitakda sa 30 minuto).

Mahimo pa nimo nga i-extend ang TTL alang sa usa ka kapanguhaan sa, ingnon ta, usa ka tuig pinaagi sa pag-apil sa may kalabutan nga sulud sa imong estratehiya sa pagdumala sa caching (URL hashes, bersyon, ug uban pa). Atong hisgotan kini sa ubos.

▍Panalipod batok sa mga paghunong sa operasyon sa mga serbisyo sa ikatulo nga partido o ang ilang pagsira

Ang laing makaiikag nga aspeto sa pag-host sa kaugalingon nga mga kapanguhaan sa ikatulo nga partido mao nga gitugotan ka nga makunhuran ang mga peligro nga may kalabotan sa mga pagkawala sa mga serbisyo sa ikatulo nga partido. Ibutang nato nga ang third-party nga A/B testing solution nga imong gigamit kay gipatuman isip blocking script nga nag-load sa head section sa page. Kini nga script hinay nga nag-load. Kung ang katugbang nga script mapakyas sa pagkarga, ang panid mahimong walay sulod. Kung dugay kaayo ang pagkarga, ang panid magpakita nga adunay taas nga paglangan. O, pananglitan ang proyekto naggamit sa usa ka librarya nga gi-download gikan sa usa ka third-party nga CDN nga kapanguhaan. Hunahunaa nga kini nga kapanguhaan nakasinati og kapakyasan o gibabagan sa usa ka nasud. Ang ingon nga sitwasyon mosangpot sa usa ka paglapas sa lohika sa site.

Aron mahibal-an kung giunsa ang paglihok sa imong site kung wala’y magamit nga serbisyo sa gawas, mahimo nimong gamiton ang seksyon sa SPOF sa webpagetest.org.

Pag-host sa kaugalingon nga mga kapanguhaan sa ikatulo nga partido: ang maayo, ang daotan, ang daotan
SPOF nga seksyon sa webpagetest.org

▍Unsa ang mahitungod sa mga problema sa pag-cache sa mga materyales sa mga browser? (hint: kini usa ka mito)

Mahimong maghunahuna ka nga ang paggamit sa publiko nga mga CDN awtomatik nga motultol sa mas maayo nga pasundayag sa kapanguhaan, tungod kay kini nga mga serbisyo adunay medyo taas nga kalidad nga mga network ug giapod-apod sa tibuuk kalibutan. Apan ang tanan sa pagkatinuod usa ka gamay nga mas komplikado.

Ingnon ta nga aduna kitay daghang lain-laing mga site: website1.com, website2.com, website3.com. Ang tanan niini nga mga site naggamit sa jQuery library. Gikonektar namo kini sa kanila gamit ang CDN, pananglitan - googleapis.com. Mahimo nimong mapaabut nga ang browser mag-download ug mag-cache sa librarya kausa, ug dayon gamiton kini sa tanan nga tulo nga mga site. Kini makapakunhod sa load sa network. Tingali kini magtugot kanimo nga makatipig salapi bisan diin ug makatabang sa pagpauswag sa pasundayag sa kapanguhaan. Gikan sa usa ka praktikal nga punto sa panglantaw, ang tanan tan-awon nga lahi. Pananglitan, ang Safari adunay usa ka bahin nga gitawag Pagpugong sa Kaalam sa Pagsubay: Ang cache naggamit sa duha ka yawe base sa tinubdan sa dokumento ug sa tinubdan sa ikatulo nga partido nga kapanguhaan. dinhi maayong artikulo bahin niini nga topiko.

daan nga pagtuon Yahoo и Facebook, ingon man sa mas bag-o panukiduki Paul Calvano, nagpakita nga ang mga kahinguhaan wala gitipigan sa mga cache sa browser kutob sa atong madahom: “Adunay seryoso nga kal-ang tali sa oras sa pag-cache sa kaugalingong proyekto ug sa ikatulo nga partido nga mga kapanguhaan. Naghisgot kami bahin sa CSS ug mga font sa web. Sa ato pa, 95% sa lumad nga mga font adunay kinabuhi sa cache nga sobra sa usa ka semana, samtang ang 50% sa mga font sa ikatulo nga partido adunay kinabuhi nga cache nga wala’y usa ka semana! Naghatag kini sa mga nag-develop sa web usa ka hinungdan nga hinungdan sa pag-host sa mga file sa font sa ilang kaugalingon!

Ingon usa ka sangputanan, kung nag-host ka sa sulud sa ubang mga tawo, dili ka makamatikod sa bisan unsang mga isyu sa pasundayag tungod sa pag-cache sa browser.

Karon nga natabunan na nato ang mga kalig-on sa third-party nga self-hosting, atong hisgotan kon unsaon pagsulti sa maayong pagpatuman niini nga pamaagi gikan sa daotan.

Ang Daotan: Ang yawa anaa sa mga detalye

Ang pagbalhin sa mga kahinguhaan sa ikatulo nga partido sa imong kaugalingon nga domain dili mahimo nga awtomatiko kung wala’y pagsiguro nga ang ingon nga mga kapanguhaan na-cache sa husto.

Usa sa mga nag-unang problema dinhi mao ang oras sa pag-cache. Pananglitan, ang impormasyon sa bersyon gilakip sa mga ngalan sa script sa ikatulo nga partido sama niini: jquery-3.4.1.js. Ang ingon nga file dili mabag-o sa umaabot, ug ingon usa ka sangputanan dili kini hinungdan sa bisan unsang mga problema sa pag-cache niini.

Apan kung ang pipila ka pamaagi sa pag-bersyon wala gigamit kung nagtrabaho uban ang mga file, ang mga naka-cache nga script, nga ang mga sulud niini nagbag-o samtang ang ngalan sa file nagpabilin nga wala mausab, mahimo’g ma-outdated. Mahimo kini nga usa ka seryoso nga problema, tungod kay kini, pananglitan, wala magtugot sa mga awtomatikong patch sa seguridad nga idugang sa mga script nga kinahanglan madawat sa mga kliyente sa labing madali nga panahon. Ang developer kinahanglan nga maningkamot sa pag-update sa maong mga script sa cache. Dugang pa, kini mahimong hinungdan sa mga kapakyasan sa aplikasyon tungod sa kamatuoran nga ang code nga gigamit sa kliyente gikan sa cache lahi sa pinakabag-o nga bersyon sa code diin ang server nga bahin sa proyekto gidisenyo.

Tinuod, kung maghisgot kita bahin sa mga materyales nga kanunay nga gi-update (tag managers, mga solusyon alang sa pagsulay sa A / B), unya ang pag-cache niini gamit ang mga gamit sa CDN usa ka buluhaton nga masulbad, apan labi ka komplikado. Ang mga serbisyo sama sa Commanders Act, usa ka solusyon sa pagdumala sa tag, naggamit sa mga webhook sa pagmantala sa bag-ong mga bersyon. Naghatag kini kanimo og abilidad sa pagpugos sa usa ka cache flush sa CDN, o, mas maayo pa, ang abilidad sa pagpugos sa usa ka hash o pag-update sa URL.

▍Mapasibo nga paghatod sa mga materyales ngadto sa mga kliyente

Dugang pa, kung maghisgot kita bahin sa caching, kinahanglan naton tagdon ang kamatuoran nga ang mga setting sa caching nga gigamit sa CDN mahimong dili angay alang sa pipila nga mga kapanguhaan sa ikatulo nga partido. Pananglitan, ang maong mga kapanguhaan mahimong mogamit sa user agent sniffing (adaptive serving) nga teknolohiya aron sa pag-alagad sa piho nga mga browser nga adunay mga bersyon sa sulod nga gi-optimize alang sa mga browser. Kini nga mga teknolohiya nagsalig sa mga regular nga ekspresyon, o usa ka database sa impormasyon sa header sa HTTP, aron mahibal-an ang mga kapabilidad sa browser. User-Agent. Kung nahibal-an na nila kung unsang browser ang ilang giatubang, gihatagan nila kini mga materyales nga gidisenyo alang niini.

Dinhi imong mahinumduman ang duha ka serbisyo. Ang una mao ang googlefonts.com. Ang ikaduha mao ang polyfill.io. Ang serbisyo sa Google Fonts naghatag, alang sa usa ka piho nga kapanguhaan, lainlaing CSS code, depende sa mga kapabilidad sa browser (paghatag mga link sa woff2 nga mga kapanguhaan gamit ang unicode-range).

Ania ang mga resulta sa usa ka magtiayon nga mga pangutana sa Google Fonts nga gihimo gikan sa lainlaing mga browser.

Pag-host sa kaugalingon nga mga kapanguhaan sa ikatulo nga partido: ang maayo, ang daotan, ang daotan
Ang resulta sa pangutana sa Google Fonts gikan sa Chrome

Pag-host sa kaugalingon nga mga kapanguhaan sa ikatulo nga partido: ang maayo, ang daotan, ang daotan
Resulta sa pangutana sa Google Fonts nga gipatuman gikan sa IE10

Ang Polyfill.io naghatag lamang sa browser sa mga polyfill nga gikinahanglan niini. Gihimo kini alang sa mga hinungdan sa performance.

Pananglitan, atong tan-awon kon unsay mahitabo kon imong ipadagan ang mosunod nga hangyo gikan sa lain-laing mga browser: https://polyfill.io/v3/polyfill.js?features=default

Agig tubag sa ingon nga hangyo nga gipatuman gikan sa IE10, 34 KB nga datos ang madawat. Ug ang tubag niini, nga gipatuman gikan sa Chrome, mahimong walay sulod.

Nasuko: Pipila ka mga konsiderasyon sa pribasiya

Kini nga punto mao ang katapusan sa han-ay, apan dili labing gamay nga hinungdanon. Ang punto mao nga ang pag-host sa kaugalingon sa mga kapanguhaan sa ikatulo nga partido sa panguna nga domain sa proyekto o sa subdomain niini mahimong makadaot sa pagkapribado sa mga tiggamit ug negatibo nga makaapekto sa panguna nga proyekto sa web.

Kung ang imong CDN nga sistema wala ma-configure sa husto, mahimo nimong ipadala ang cookies sa imong domain sa serbisyo sa ikatulo nga partido. Kung ang husto nga pagsala dili organisado sa lebel sa CDN, nan ang imong session cookies, nga kasagaran dili magamit sa JavaScript (uban ang httponly), mahimong ipadala ngadto sa langyaw nga panon.

Kini gyud ang mahitabo sa mga tracker sama sa Eulerian o Criteo. Ang mga tigsubay sa ikatulo nga partido mahimo’g nagbutang usa ka talagsaon nga identifier sa cookie. Kung bahin sila sa mga materyal sa site, mahimo nilang basahon ang identifier sa ilang pagkabuotan samtang ang user nagtrabaho uban ang lainlaing mga kapanguhaan sa web.

Karong mga adlawa, kadaghanan sa mga browser naglakip sa panalipod batok niining matang sa kinaiya sa tracker. Ingon nga resulta, ang mga tracker karon naggamit sa teknolohiya CNAME Cloaking, nagtakuban isip ilang kaugalingong mga script para sa lain-laing mga proyekto. Sa ato pa, ang mga tracker nagtanyag sa mga tag-iya sa site aron idugang ang usa ka CNAME sa ilang mga setting alang sa usa ka piho nga domain, ang adres nga kasagaran tan-awon sama sa usa ka random nga set sa mga karakter.

Bisan tuod wala girekomendar ang paghimo sa cookies sa website nga magamit sa tanang subdomain (pananglitan - *.website.com), daghang mga site ang nagbuhat niini. Sa kini nga kaso, ang ingon nga mga cookies awtomatik nga ipadala sa usa ka nagtakuban nga third-party tracker. Ingon usa ka sangputanan, dili na kami makasulti bahin sa bisan unsang pribasiya.

Ingon usab, ang parehas nga butang mahitabo sa mga header sa HTTP Mga Sugyot sa Kliyente, nga gipadala lamang sa nag-unang dominyo, tungod kay kini magamit sa paghimo digital fingerprint tiggamit. Siguruha nga ang serbisyo sa CDN nga imong gigamit nagsala niini nga mga ulohan sa husto.

Mga resulta

Kung nagplano ka nga ipatuman ang kaugalingon nga pag-host sa mga kapanguhaan sa ikatulo nga partido sa dili madugay, hatagan ko ikaw pipila ka tambag:

  • I-host ang imong labing hinungdanon nga mga librarya sa JS, mga font ug mga file sa CSS. Kini makapakunhod sa risgo sa pagkapakyas sa site o pagkadaut sa performance tungod sa usa ka kapanguhaan nga importante sa site nga dili magamit tungod sa sayup sa usa ka third-party nga serbisyo.
  • Sa dili pa nimo i-cache ang mga kapanguhaan sa ikatulo nga partido sa usa ka CDN, siguroa nga adunay usa ka matang sa sistema sa pag-bersyon nga gigamit sa pagngalan sa ilang mga file, o nga mahimo nimong madumala ang siklo sa kinabuhi niini nga mga kapanguhaan pinaagi sa mano-mano o awtomatiko nga pag-reset sa cache sa CDN kung mag-publish usa ka bag-ong bersyon sa ang script.
  • Pag-amping pag-ayo sa imong CDN, proxy server, ug mga setting sa cache. Kini magtugot kanimo sa pagpugong sa imong proyekto o mga ulohan gikan sa pagpadala og cookies Client-Hints serbisyo sa ikatulo nga partido.

Minahal nga magbabasa! Nag-host ka ba sa mga materyales sa ubang mga tawo sa imong mga server nga hinungdanon kaayo alang sa operasyon sa imong mga proyekto?

Pag-host sa kaugalingon nga mga kapanguhaan sa ikatulo nga partido: ang maayo, ang daotan, ang daotan
Pag-host sa kaugalingon nga mga kapanguhaan sa ikatulo nga partido: ang maayo, ang daotan, ang daotan

Source: www.habr.com

Idugang sa usa ka comment