Sjálfhýsingarefni þriðja aðila: hið góða, það slæma, það ljóta

Á undanförnum árum hafa fleiri og fleiri vettvangar til að hagræða framendaverkefnum boðið upp á tækifæri til að hýsa sjálf eða umboð þriðja aðila auðlinda. Akamai gerir þér kleift að stilla sérstakar breytur fyrir sjálfgerðar vefslóðir. Cloudflare hefur Edge Workers tækni. Fasterzine dós endurskrifa Vefslóðir á síðum þannig að þær bendi á auðlindir þriðja aðila sem staðsettar eru á aðalléni síðunnar.

Sjálfhýsingarefni þriðja aðila: hið góða, það slæma, það ljóta

Ef þú veist að þjónusta þriðja aðila sem notuð er í verkefninu þínu breytist ekki mjög oft og að hægt væri að bæta ferlið við að afhenda þær til viðskiptavina, þá ertu líklega að hugsa um að bjóða upp á slíka þjónustu. Með þessari nálgun geturðu mjög vel fært þessar auðlindir nær notendum þínum og fengið fullkomnari stjórn á skyndiminni þeirra á biðlarahlið. Þetta gerir þér að auki kleift að vernda notendur fyrir vandræðum af völdum „hruns“ þjónustu þriðja aðila eða skerðingar á frammistöðu hennar.

Gott: Bætt frammistöðu

Að hýsa auðlindir annarra bætir árangur á mjög augljósan hátt. Vafrinn þarf ekki að fá aðgang að DNS aftur, hann þarf ekki að koma á TCP tengingu og framkvæma TLS handaband á þriðja aðila léni. Þú getur séð hvernig sjálfhýsing auðlinda einhvers annars hefur áhrif á árangur með því að bera saman eftirfarandi tvær tölur.

Sjálfhýsingarefni þriðja aðila: hið góða, það slæma, það ljóta
Tilföng þriðja aðila eru sótt frá utanaðkomandi aðilum (tekið frá þess vegna)

Sjálfhýsingarefni þriðja aðila: hið góða, það slæma, það ljóta
Tilföng þriðja aðila eru geymd á sama stað og restin af efni vefsvæðisins (tekið frá þess vegna)

Ástandið batnar líka með því að vafrinn notar möguleikann á að margfalda og forgangsraða gögnum frá HTTP/2 tengingunni sem þegar hefur verið komið á við aðallénið.

Ef þú hýsir ekki tilföng þriðja aðila, þar sem þau verða hlaðin frá öðru léni en aðalléninu, er ekki hægt að forgangsraða þeim. Þetta mun valda því að þeir keppa sín á milli um bandbreidd viðskiptavinarins. Þetta getur leitt til hleðslutíma fyrir efni sem er mikilvægt til að byggja upp síðu sem er mun lengri en það sem væri hægt að ná við kjöraðstæður. Hér tala um HTTP/2 forgangsröðun sem útskýrir þetta allt mjög vel.

Gera má ráð fyrir að notkun eiginda í tenglum við ytri auðlindir preconnect mun hjálpa til við að leysa vandamálið. Hins vegar, ef það eru of margir af þessum hlekkjum á mismunandi lén, getur það í raun ofhlaðið samskiptalínuna á mikilvægustu augnablikinu.

Ef þú hýsir auðlindir þriðja aðila sjálfur geturðu stjórnað því hvernig nákvæmlega þessar auðlindir eru gefnar til viðskiptavinarins. Við erum nefnilega að tala um eftirfarandi:

  • Þú getur tryggt að gagnaþjöppunaralgrímið sem hentar best hverjum vafra sé notað (Brotli/gzip).
  • Þú getur aukið skyndiminni fyrir tilföng sem eru venjulega ekki sérstaklega löng, jafnvel hjá þekktustu veitendum (til dæmis er samsvarandi gildi fyrir GA merkið stillt á 30 mínútur).

Þú getur jafnvel lengt TTL fyrir tilföng í, til dæmis, eitt ár með því að fella viðeigandi efni inn í skyndiminnisstjórnunarstefnu þína (vefslóð kjötkássa, útgáfur o.s.frv.). Við munum tala um þetta hér að neðan.

▍Vörn gegn truflunum á rekstri þjónustu þriðja aðila eða lokun þeirra

Annar áhugaverður þáttur í auðlindum þriðja aðila sem hýsir sjálfan sig er að það gerir þér kleift að draga úr áhættunni sem tengist truflunum á þjónustu þriðja aðila. Gerum ráð fyrir að þriðja aðila A/B prófunarlausnin sem þú notar sé útfærð sem blokkunarforskrift sem hleðst í höfuðhluta síðunnar. Þetta handrit hleðst hægt. Ef samsvarandi skriftu tekst ekki að hlaðast verður síðan tóm. Ef það tekur mjög langan tíma að hlaða þá birtist síðan með mikilli töf. Eða gerðu ráð fyrir að verkefnið noti bókasafn sem er hlaðið niður af CDN auðlind þriðja aðila. Ímyndum okkur að þessi auðlind hafi orðið fyrir bilun eða verið læst í ákveðnu landi. Slíkt ástand mun leiða til brots á rökfræði síðunnar.

Til að komast að því hvernig vefsíðan þín virkar þegar einhver utanaðkomandi þjónusta er ekki tiltæk geturðu notað SPOF hlutann á webpagetest.org.

Sjálfhýsingarefni þriðja aðila: hið góða, það slæma, það ljóta
SPOF hluta á webpagetest.org

▍Hvað með vandamál með skyndiminni efnis í vöfrum? (vísbending: það er goðsögn)

Þú gætir haldið að notkun opinberra CDNs myndi sjálfkrafa leiða til betri auðlindaframmistöðu, þar sem þessi þjónusta er með nokkuð hágæða netkerfi og er dreift um allan heim. En allt er í rauninni aðeins flóknara.

Segjum að við höfum nokkrar mismunandi síður: website1.com, website2.com, website3.com. Allar þessar síður nota jQuery bókasafnið. Við tengjum það við þá með því að nota CDN, til dæmis - googleapis.com. Þú getur búist við að vafrinn hali niður og geymi safnið einu sinni og noti það síðan á öllum þremur síðunum. Þetta gæti dregið úr álagi á netið. Kannski gerir þetta þér kleift að spara peninga einhvers staðar og hjálpa þér að bæta árangur auðlinda. Frá hagnýtu sjónarhorni lítur allt öðruvísi út. Til dæmis, Safari hefur eiginleika sem kallast Greindar mælingar: Skyndiminnið notar tvöfalda lykla sem byggjast á uppruna skjalsins og uppruna þriðja aðila tilföngsins. Hér góð grein um þetta efni.

gamlar rannsóknir Yahoo и Facebook, auk nýlegra rannsókn Paul Calvano, sýnir að tilföng eru ekki geymd í skyndiminni vafra eins lengi og við gætum búist við: „Það er alvarlegt bil á milli skyndiminni tíma eigin verkefnis og tilföngs þriðja aðila. Við erum að tala um CSS og vefleturgerðir. Nefnilega, 95% innfæddra leturgerða hafa skyndiminni líf sem er meira en viku, á meðan 50% leturgerða frá þriðja aðila eru með skyndiminni sem er innan við viku! Þetta gefur vefhönnuðum sannfærandi ástæðu til að hýsa leturskrár sjálfir!

Þar af leiðandi, ef þú hýsir efni annarra, muntu ekki taka eftir neinum frammistöðuvandamálum af völdum skyndiminni vafra.

Nú þegar við höfum fjallað um styrkleika sjálfhýsingar þriðja aðila, skulum við tala um hvernig á að greina góða útfærslu á þessari nálgun frá slæmri.

The Bad: Djöfullinn er í smáatriðunum

Ekki er hægt að færa tilföng þriðja aðila yfir á þitt eigið lén sjálfkrafa án þess að tryggja að slík tilföng séu rétt í skyndiminni.

Eitt helsta vandamálið hér er skyndiminnistími. Til dæmis eru útgáfuupplýsingar innifalin í skriftunöfnum þriðja aðila eins og þetta: jquery-3.4.1.js. Slík skrá mun ekki breytast í framtíðinni og þar af leiðandi mun þetta ekki valda neinum vandræðum með skyndiminni hennar.

En ef eitthvert útgáfukerfi er ekki notað þegar unnið er með skrár, geta skyndiminni forskriftir, sem breytist á meðan skráarnafnið er óbreytt, orðið úrelt. Þetta getur verið alvarlegt vandamál þar sem það leyfir til dæmis ekki að bæta sjálfvirkum öryggisplástra við forskriftir sem viðskiptavinir þurfa að fá eins fljótt og auðið er. Framkvæmdaraðilinn verður að leggja sig fram um að uppfæra slík forskrift í skyndiminni. Að auki getur þetta valdið bilun í forritum vegna þess að kóðinn sem notaður er á biðlara úr skyndiminni er frábrugðinn nýjustu útgáfu kóðans sem miðlarahluti verkefnisins er hannaður fyrir.

Það er satt, ef við tölum um efni sem eru uppfærð oft (merkjastjórar, lausnir fyrir A/B próf), þá er það verkefni sem hægt er að leysa, en það er miklu flóknara að vista það með CDN verkfærum. Þjónusta eins og Commanders Act, merkjastjórnunarlausn, notar vefhooks þegar þær eru birtar nýjar útgáfur. Þetta gefur þér möguleika á að þvinga skyndiminnisskolun á CDN, eða, enn betra, getu til að þvinga kjötkássa eða vefslóð uppfærslu.

▍Slaghæf afhending efnis til viðskiptavina

Þar að auki, þegar við tölum um skyndiminni, þurfum við að taka tillit til þess að skyndiminnisstillingarnar sem notaðar eru á CDN henta kannski ekki sumum auðlindum þriðja aðila. Til dæmis geta slík auðlindir notað notendaþjónustusniffing (adaptive servering) tækni til að þjóna tilteknum vöfrum með útgáfur af efni sem eru sérstaklega fínstilltar fyrir þá vafra. Þessi tækni byggir á reglulegum tjáningum, eða gagnagrunni með HTTP hausupplýsingum, til að finna út möguleika vafrans. User-Agent. Þegar þeir vita hvaða vafra þeir eru að fást við gefa þeir honum efni sem hannað er fyrir hann.

Hér má muna eftir tveimur þjónustum. Sá fyrsti er googlefonts.com. Sá seinni er polyfill.io. Google Fonts þjónustan veitir, fyrir ákveðna auðlind, ýmsan CSS kóða, allt eftir getu vafrans (sem gefur tengla á woff2 auðlindir með því að nota unicode-range).

Hér eru niðurstöður nokkurra Google leturgerðafyrirspurna úr mismunandi vöfrum.

Sjálfhýsingarefni þriðja aðila: hið góða, það slæma, það ljóta
Niðurstaða Google leturfyrirspurna frá Chrome

Sjálfhýsingarefni þriðja aðila: hið góða, það slæma, það ljóta
Niðurstaða Google leturgerðarfyrirspurnar keyrð úr IE10

Polyfill.io gefur vafranum aðeins fjölfyllingar sem hann þarfnast. Þetta er gert af frammistöðuástæðum.

Til dæmis skulum við skoða hvað gerist ef þú keyrir eftirfarandi beiðni frá mismunandi vöfrum: https://polyfill.io/v3/polyfill.js?features=default

Til að bregðast við slíkri beiðni sem framkvæmd er frá IE10, munu 34 KB af gögnum berast. Og svarið við því, keyrt úr Chrome, verður tómt.

Reiður: Nokkur persónuverndarsjónarmið

Þetta atriði er síðast í röðinni, en ekki síst mikilvægt. Aðalatriðið er að sjálfhýsing auðlinda þriðja aðila á aðalléni verkefnisins eða á undirléni þess getur teflt friðhelgi notenda í hættu og haft neikvæð áhrif á aðalvefverkefnið.

Ef CDN kerfið þitt er ekki rétt stillt gætirðu endað með því að senda vafrakökur lénsins þíns til þjónustu þriðja aðila. Ef rétt síun er ekki skipulögð á CDN stigi, þá eru setukökur þínar, sem venjulega er ekki hægt að nota í JavaScript (með httponly), má senda til erlends gestgjafa.

Þetta er nákvæmlega það sem getur gerst með rekja spor einhvers eins og Eulerian eða Criteo. Þriðju aðilar rekja má einstakt auðkenni í vafrakökunni. Ef þeir voru hluti af efni vefsvæðisins gátu þeir lesið auðkennið að eigin vali á meðan notandinn var að vinna með mismunandi vefauðlindir.

Þessa dagana eru flestir vafrar með vörn gegn þessari tegund af rekja spor einhvers hegðun. Fyrir vikið nota mælingar nú tækni CNAME skikkju, dulbúin sem eigin handrit að ýmsum verkefnum. Rakarar bjóða nefninlega eigendum vefsíðna að bæta CNAME við stillingar sínar fyrir ákveðið lén, heimilisfangið á því lítur venjulega út eins og tilviljunarkennt sett af stöfum.

Þó ekki sé mælt með því að gera vefkökur aðgengilegar öllum undirlénum (til dæmis - *.website.com), þá gera margar síður þetta. Í þessu tilviki eru slíkar vafrakökur sendar sjálfkrafa til dulbúins þriðju aðila rekja spor einhvers. Þar af leiðandi getum við ekki lengur talað um neitt næði.

Einnig gerist það sama með HTTP hausum Viðskiptavinur-vísbendingar, sem eru aðeins sendar á aðallénið, þar sem hægt er að nota þau til að búa til stafrænt fingrafar notandi. Gakktu úr skugga um að CDN þjónustan sem þú notar síi þessa hausa rétt.

Niðurstöður

Ef þú ætlar að innleiða sjálfhýsingu auðlinda þriðja aðila fljótlega, leyfðu mér að gefa þér ráð:

  • Hýstu mikilvægustu JS bókasöfnin þín, leturgerðir og CSS skrár. Þetta mun draga úr hættu á bilun á vefsvæði eða skerðingu á frammistöðu vegna þess að auðlind sem er mikilvæg fyrir vefsvæðið er ekki tiltæk vegna galla þriðja aðila þjónustu.
  • Áður en þú vistar tilföng þriðja aðila á CDN skaltu ganga úr skugga um að einhvers konar útgáfukerfi sé notað þegar þú gefur skrám þeirra nafn, eða að þú getir stjórnað líftíma þessara tilfönga með því að endurstilla CDN skyndiminni handvirkt eða sjálfkrafa þegar þú gefur út nýja útgáfu af handritið.
  • Vertu mjög varkár með stillingar CDN, proxy-þjóns og skyndiminni. Þetta gerir þér kleift að koma í veg fyrir að verkefnið þitt eða hausar séu sendar vafrakökur Client-Hints þjónustu þriðja aðila.

Kæru lesendur! Hýsir þú efni annarra á netþjónum þínum sem er afar mikilvægt fyrir rekstur verkefna þinna?

Sjálfhýsingarefni þriðja aðila: hið góða, það slæma, það ljóta
Sjálfhýsingarefni þriðja aðila: hið góða, það slæma, það ljóta

Heimild: www.habr.com

Bæta við athugasemd