Adnoddau trydydd parti hunangynhaliol: y da, y drwg, yr hyll

Yn ystod y blynyddoedd diwethaf, mae mwy a mwy o lwyfannau ar gyfer optimeiddio prosiectau pen blaen yn cynnig cyfleoedd ar gyfer hunangynnal neu ddirprwyo adnoddau trydydd parti. Mae Akamai yn caniatáu ichi osod paramedrau penodol ar gyfer URLs hunan-gynhyrchu. Mae gan Cloudflare dechnoleg Edge Workers. Gall Fasterzine ailysgrifennu URLs ar dudalennau fel eu bod yn pwyntio at adnoddau trydydd parti sydd wedi'u lleoli ar brif barth y wefan.

Adnoddau trydydd parti hunangynhaliol: y da, y drwg, yr hyll

Os gwyddoch nad yw’r gwasanaethau trydydd parti a ddefnyddir yn eich prosiect yn newid yn aml iawn, ac y gellid gwella’r broses o’u cyflwyno i gleientiaid, yna mae’n debyg eich bod yn meddwl am ddirprwyo gwasanaethau o’r fath. Gyda'r dull hwn, gallwch chi ddod â'r adnoddau hyn yn agosach at eich defnyddwyr a chael rheolaeth fwy cyflawn dros eu caching ar ochr y cleient. Mae hyn, yn ogystal, yn eich galluogi i amddiffyn defnyddwyr rhag trafferthion a achosir gan “damwain” gwasanaeth trydydd parti neu ddirywiad yn ei berfformiad.

Da: Gwell perfformiad

Mae hunangynnal adnoddau rhywun arall yn gwella perfformiad mewn ffordd amlwg iawn. Nid oes angen i'r porwr gyrchu DNS eto, nid oes angen iddo sefydlu cysylltiad TCP a pherfformio ysgwyd llaw TLS ar barth trydydd parti. Gallwch weld sut mae hunangynnal adnoddau rhywun arall yn effeithio ar berfformiad trwy gymharu'r ddau ffigur canlynol.

Adnoddau trydydd parti hunangynhaliol: y da, y drwg, yr hyll
Mae adnoddau trydydd parti yn cael eu llwytho i lawr o ffynonellau allanol (a gymerwyd o felly)

Adnoddau trydydd parti hunangynhaliol: y da, y drwg, yr hyll
Mae adnoddau trydydd parti yn cael eu storio yn yr un lle â gweddill deunyddiau'r safle (a gymerwyd o felly)

Mae'r sefyllfa hefyd yn gwella gan y ffaith y bydd y porwr yn defnyddio'r gallu i amlblecsu a blaenoriaethu data o'r cysylltiad HTTP/2 sydd eisoes wedi'i sefydlu gyda'r prif barth.

Os nad ydych yn cynnal adnoddau trydydd parti, yna gan y byddant yn cael eu llwytho o barth gwahanol i'r prif un, ni ellir eu blaenoriaethu. Bydd hyn yn achosi iddynt gystadlu â'i gilydd am led band y cleient. Gall hyn arwain at amseroedd llwytho ar gyfer cynnwys sy'n hanfodol i adeiladu tudalen sy'n llawer hirach na'r hyn a fyddai'n bosibl o dan amgylchiadau delfrydol. Yma siarad ar flaenoriaethu HTTP/2 sy'n esbonio hyn i gyd yn dda iawn.

Gellir tybio bod y defnydd o briodoleddau mewn dolenni i adnoddau allanol preconnect bydd yn helpu i ddatrys y broblem. Fodd bynnag, os oes gormod o'r cysylltiadau hyn â gwahanol barthau, gall mewn gwirionedd orlwytho'r llinell gyfathrebu ar yr eiliad bwysicaf.

Os ydych chi'n cynnal adnoddau trydydd parti eich hun, gallwch reoli sut yn union y rhoddir yr adnoddau hyn i'r cleient. Sef, rydym yn sôn am y canlynol:

  • Gallwch sicrhau bod yr algorithm cywasgu data sy'n gweddu orau i bob porwr yn cael ei ddefnyddio (Brotli/gzip).
  • Gallwch gynyddu'r amser caching ar gyfer adnoddau nad ydynt fel arfer yn arbennig o hir, hyd yn oed gyda'r darparwyr mwyaf adnabyddus (er enghraifft, mae'r gwerth cyfatebol ar gyfer y tag GA wedi'i osod i 30 munud).

Gallwch hyd yn oed ymestyn y TTL am adnodd i, dyweder, flwyddyn trwy ymgorffori cynnwys perthnasol yn eich strategaeth rheoli caching (stwnsh URL, fersiwn, ac ati). Byddwn yn siarad am hyn isod.

▍Amddiffyn rhag ymyriadau yng ngweithrediad gwasanaethau trydydd parti neu eu cau i lawr

Agwedd ddiddorol arall ar hunangynnal adnoddau trydydd parti yw ei fod yn caniatáu ichi liniaru'r risgiau sy'n gysylltiedig â thorri gwasanaethau trydydd parti. Gadewch i ni dybio bod yr ateb profi A/B trydydd parti rydych chi'n ei ddefnyddio yn cael ei weithredu fel sgript blocio sy'n llwytho ym mhennawd y dudalen. Mae'r sgript hon yn llwytho'n araf. Os na fydd y sgript gyfatebol yn llwytho, bydd y dudalen yn wag. Os bydd yn cymryd amser hir iawn i'w llwytho, bydd y dudalen yn ymddangos gydag oedi hir. Neu, mae'n debyg bod y prosiect yn defnyddio llyfrgell wedi'i lawrlwytho o adnodd CDN trydydd parti. Gadewch i ni ddychmygu bod yr adnodd hwn wedi profi methiant neu wedi'i rwystro mewn gwlad benodol. Bydd sefyllfa o'r fath yn arwain at dorri rhesymeg y safle.

I ddarganfod sut mae'ch gwefan yn gweithio pan nad yw rhywfaint o wasanaeth allanol ar gael, gallwch ddefnyddio'r adran SPOF ar webpagetest.org.

Adnoddau trydydd parti hunangynhaliol: y da, y drwg, yr hyll
Adran SPOF ar webpagetest.org

▍Beth am broblemau gyda storio deunyddiau mewn porwyr? (awgrym: mae'n chwedl)

Efallai eich bod yn meddwl y byddai defnyddio CDNs cyhoeddus yn arwain yn awtomatig at berfformiad adnoddau gwell, gan fod gan y gwasanaethau hyn rwydweithiau o ansawdd eithaf uchel a'u bod yn cael eu dosbarthu ledled y byd. Ond mewn gwirionedd mae popeth ychydig yn fwy cymhleth.

Gadewch i ni ddweud bod gennym nifer o wahanol safleoedd: website1.com, website2.com, website3.com. Mae pob un o'r gwefannau hyn yn defnyddio llyfrgell jQuery. Rydyn ni'n ei gysylltu â nhw gan ddefnyddio CDN, er enghraifft - googleapis.com. Gallwch ddisgwyl i'r porwr lawrlwytho a storio'r llyfrgell unwaith, ac yna ei ddefnyddio ar draws y tri safle. Gallai hyn leihau'r llwyth ar y rhwydwaith. Efallai y bydd hyn yn caniatáu ichi arbed arian yn rhywle a helpu i wella perfformiad adnoddau. O safbwynt ymarferol, mae popeth yn edrych yn wahanol. Er enghraifft, mae gan Safari nodwedd o'r enw Atal Olrhain Deallus: Mae'r storfa'n defnyddio bysellau deuol yn seiliedig ar ffynhonnell y ddogfen a ffynhonnell yr adnodd trydydd parti. Yma erthygl dda ar y pwnc hwn.

hen astudiaethau Yahoo и Facebook, yn ogystal â mwy diweddar ymchwil Paul Calvano, yn dangos nad yw adnoddau'n cael eu storio mewn celc porwr cyhyd ag y gallem ddisgwyl: “Mae bwlch difrifol rhwng amser storio adnoddau'r prosiect ei hun ac adnoddau trydydd parti. Rydym yn siarad am CSS a ffontiau gwe. Sef, mae gan 95% o ffontiau brodorol oes storfa o fwy nag wythnos, tra bod gan 50% o ffontiau trydydd parti oes storfa o lai nag wythnos! Mae hyn yn rhoi rheswm cymhellol i ddatblygwyr gwe gynnal ffeiliau ffont eu hunain!”

O ganlyniad, os ydych yn cynnal cynnwys pobl eraill, ni fyddwch yn sylwi ar unrhyw faterion perfformiad a achosir gan caching porwr.

Nawr ein bod wedi ymdrin â chryfderau hunan-gynnal trydydd parti, gadewch i ni siarad am sut i ddweud wrth un gwael am weithrediad da o'r dull hwn.

Y Drwg: Mae'r diafol yn y manylion

Ni ellir symud adnoddau trydydd parti i'ch parth eich hun yn awtomatig heb sicrhau bod adnoddau o'r fath yn cael eu storio'n gywir.

Un o'r prif broblemau yma yw caching amser. Er enghraifft, mae gwybodaeth fersiwn wedi'i chynnwys mewn enwau sgriptiau trydydd parti fel hyn: jquery-3.4.1.js. Ni fydd ffeil o'r fath yn newid yn y dyfodol, ac o ganlyniad ni fydd hyn yn achosi unrhyw broblemau gyda'i storio.

Ond os na ddefnyddir rhyw gynllun fersiwn wrth weithio gyda ffeiliau, efallai y bydd sgriptiau wedi'u storio, y mae eu cynnwys yn newid tra bod enw'r ffeil yn parhau heb ei newid, yn mynd yn hen ffasiwn. Gall hyn fod yn broblem ddifrifol, gan nad yw, er enghraifft, yn caniatáu ychwanegu clytiau diogelwch awtomataidd at sgriptiau y mae angen i gleientiaid eu derbyn cyn gynted â phosibl. Bydd yn rhaid i'r datblygwr wneud ymdrech i ddiweddaru sgriptiau o'r fath yn y storfa. Yn ogystal, gall hyn achosi methiannau cais oherwydd bod y cod a ddefnyddir ar y cleient o'r storfa yn wahanol i'r fersiwn ddiweddaraf o'r cod y mae rhan gweinydd y prosiect wedi'i ddylunio ar ei gyfer.

Yn wir, os ydym yn siarad am ddeunyddiau sy'n cael eu diweddaru'n aml (rheolwyr tagiau, datrysiadau ar gyfer profion A / B), yna mae eu storio gan ddefnyddio offer CDN yn dasg y gellir ei datrys, ond mae'n llawer mwy cymhleth. Mae gwasanaethau fel Commanders Act, datrysiad rheoli tagiau, yn defnyddio bachau gwe wrth gyhoeddi fersiynau newydd. Mae hyn yn rhoi'r gallu i chi orfodi fflysio storfa ar y CDN, neu, yn well eto, y gallu i orfodi diweddariad hash neu URL.

▍ Cyflwyno deunyddiau'n addas i gleientiaid

Yn ogystal, pan fyddwn yn siarad am caching, mae angen i ni ystyried y ffaith efallai na fydd y gosodiadau caching a ddefnyddir ar y CDN yn addas ar gyfer rhai adnoddau trydydd parti. Er enghraifft, gall adnoddau o'r fath ddefnyddio technoleg ffroeni asiant defnyddwyr (gweinyddu addasol) i wasanaethu porwyr penodol gyda fersiynau o gynnwys wedi'u hoptimeiddio'n benodol ar gyfer y porwyr hynny. Mae'r technolegau hyn yn dibynnu ar ymadroddion rheolaidd, neu gronfa ddata o wybodaeth pennawd HTTP, i ddarganfod galluoedd porwr. User-Agent. Unwaith y byddant yn gwybod pa borwr y maent yn delio ag ef, maent yn rhoi deunyddiau sydd wedi'u cynllunio ar ei gyfer.

Yma gallwch gofio dau wasanaeth. Yr un cyntaf yw googlefonts.com. Yr ail un yw polyfill.io. Mae gwasanaeth Ffontiau Google yn darparu, ar gyfer adnodd penodol, god CSS amrywiol, yn dibynnu ar alluoedd y porwr (gan roi dolenni i adnoddau woff2 gan ddefnyddio unicode-range).

Dyma ganlyniadau cwpl o ymholiadau Google Fonts a wnaed o wahanol borwyr.

Adnoddau trydydd parti hunangynhaliol: y da, y drwg, yr hyll
Canlyniad ymholiad Google Fonts o Chrome

Adnoddau trydydd parti hunangynhaliol: y da, y drwg, yr hyll
Canlyniad ymholiad Google Fonts wedi'i weithredu o IE10

Dim ond y polyfills sydd eu hangen arno y mae Polyfill.io yn ei roi i'r porwr. Gwneir hyn am resymau perfformiad.

Er enghraifft, gadewch i ni edrych ar yr hyn sy'n digwydd os ydych chi'n rhedeg y cais canlynol o wahanol borwyr: https://polyfill.io/v3/polyfill.js?features=default

Mewn ymateb i gais o'r fath a weithredwyd gan IE10, bydd 34 KB o ddata yn cael ei dderbyn. A bydd yr ateb iddo, a weithredir o Chrome, yn wag.

Angry: Rhai ystyriaethau preifatrwydd

Mae'r pwynt hwn yn olaf mewn trefn, ond nid yn lleiaf pwysig. Y pwynt yw y gall hunangynnal adnoddau trydydd parti ar brif barth y prosiect neu ar ei is-barth beryglu preifatrwydd defnyddwyr ac effeithio'n negyddol ar y prif brosiect gwe.

Os nad yw eich system CDN wedi'i ffurfweddu'n gywir, efallai y byddwch yn anfon cwcis eich parth i wasanaeth trydydd parti. Os na threfnir hidlo cywir ar lefel CDN, yna bydd eich cwcis sesiwn, na ellir eu defnyddio yn JavaScript fel arfer (gyda'r httponly), gellir ei anfon at westeiwr tramor.

Dyma'n union beth all ddigwydd gyda thracwyr fel Eulerian neu Criteo. Mae'n bosibl bod tracwyr trydydd parti wedi gosod dynodwr unigryw yn y cwci. Pe baent yn rhan o ddeunyddiau safle, gallent ddarllen y dynodwr yn ôl eu disgresiwn tra bod y defnyddiwr yn gweithio gyda gwahanol adnoddau gwe.

Y dyddiau hyn, mae'r rhan fwyaf o borwyr yn cynnwys amddiffyniad yn erbyn y math hwn o ymddygiad olrhain. O ganlyniad, mae tracwyr bellach yn defnyddio technoleg Clociad CNAME, gan ffugio fel eu sgriptiau eu hunain ar gyfer prosiectau amrywiol. Sef, mae tracwyr yn cynnig i berchnogion gwefannau ychwanegu CNAME at eu gosodiadau ar gyfer parth penodol, y mae ei gyfeiriad fel arfer yn edrych fel set o nodau ar hap.

Er nad yw'n cael ei argymell i wneud cwcis gwefan ar gael i bob is-faes (er enghraifft - *.website.com), mae llawer o wefannau yn gwneud hyn. Yn yr achos hwn, mae cwcis o'r fath yn cael eu hanfon yn awtomatig i draciwr trydydd parti cudd. O ganlyniad, ni allwn siarad am unrhyw breifatrwydd mwyach.

Hefyd, mae'r un peth yn digwydd gyda phenawdau HTTP Awgrymiadau Cleient, sy'n cael eu hanfon i'r prif barth yn unig, gan y gellir eu defnyddio i greu olion bysedd digidol defnyddiwr. Sicrhewch fod y gwasanaeth CDN a ddefnyddiwch yn hidlo'r penawdau hyn yn gywir.

Canlyniadau

Os ydych chi'n bwriadu gweithredu hunangynnal adnoddau trydydd parti yn fuan, gadewch imi roi rhai awgrymiadau i chi:

  • Cynhaliwch eich llyfrgelloedd JS pwysicaf, ffontiau a ffeiliau CSS. Bydd hyn yn lleihau'r risg o fethiant safle neu ddiraddio perfformiad oherwydd nad yw adnodd hanfodol i'r safle ar gael oherwydd bai gwasanaeth trydydd parti.
  • Cyn i chi storio adnoddau trydydd parti ar CDN, gwnewch yn siŵr bod rhyw fath o system fersiynu yn cael ei defnyddio wrth enwi eu ffeiliau, neu y gallwch reoli cylch bywyd yr adnoddau hyn trwy ailosod storfa CDN â llaw neu'n awtomatig wrth gyhoeddi fersiwn newydd o y sgript.
  • Byddwch yn ofalus iawn am eich gosodiadau CDN, gweinydd dirprwyol, a storfa. Bydd hyn yn caniatáu ichi atal cwcis rhag cael eu hanfon at eich prosiect neu benawdau Client-Hints gwasanaethau trydydd parti.

Annwyl ddarllenwyr! A ydych chi'n cynnal deunyddiau pobl eraill ar eich gweinyddwyr sy'n hynod bwysig ar gyfer gweithrediad eich prosiectau?

Adnoddau trydydd parti hunangynhaliol: y da, y drwg, yr hyll
Adnoddau trydydd parti hunangynhaliol: y da, y drwg, yr hyll

Ffynhonnell: hab.com

Ychwanegu sylw