Çavkaniyên sêyemîn ên xwe-mêvandar: ya baş, xirab, nebaş

Di salên dawî de, bêtir û bêtir platformên ji bo xweşbînkirina projeyên pêş-endê fersendên ji bo xwe-mêvandariya an proxykirina çavkaniyên sêyemîn pêşkêşî dikin. Akamai dihêle hûn saz bikin parametreyên taybet ji bo URLên xweser ên çêkirî. Cloudflare teknolojiya Edge Workers heye. Fasterzine dikare qeydgûherrandin URLên li ser rûpelan da ku ew çavkaniyên sêyemîn-ê ku li ser qada sereke ya malperê ne destnîşan dikin.

Çavkaniyên sêyemîn ên xwe-mêvandar: ya baş, xirab, nebaş

Ger hûn dizanin ku karûbarên sêyemîn ên ku di projeya we de têne bikar anîn pir caran naguherin, û ku pêvajoya radestkirina wan ji xerîdaran re dikare baştir bibe, wê hingê hûn belkî li ser proxykirina karûbarên weha difikirin. Bi vê nêzîkatiyê, hûn dikarin pir baş van çavkaniyan nêzî bikarhênerên xwe bikin û li ser xerîdarkirina wan kontrolek bêkêmasî bistînin. Digel vê yekê, ev dihêle hûn bikarhêneran ji tengahiyên ku ji ber "qezbûna" karûbarek sêyemîn an xirabkirina performansa wê ve hatî çêkirin biparêzin.

Baş: Performansa çêtir

Xwe-mêvandariya çavkaniyên kesek din bi rengek pir eşkere performansê baştir dike. Gerok ne hewce ye ku dîsa bigihîje DNS-ê, ne hewce ye ku pêwendiyek TCP saz bike û li ser domainek partiya sêyemîn destekek TLS pêk bîne. Hûn dikarin bibînin ka çawa xwe-mêvandariya çavkaniyên kesek din bandor li performansê dike bi berhevkirina du hejmarên jêrîn.

Çavkaniyên sêyemîn ên xwe-mêvandar: ya baş, xirab, nebaş
Çavkaniyên partiya sêyemîn ji çavkaniyên derveyî têne dakêşandin (ji girtin ji vir)

Çavkaniyên sêyemîn ên xwe-mêvandar: ya baş, xirab, nebaş
Çavkaniyên partiya sêyem li heman cîhê ku materyalên mayî yên malperê têne hilanîn (ji ji vir)

Di heman demê de rewş ji hêla vê yekê ve çêtir dibe ku gerok dê jêhatîbûna pirreng û pêşînkirina daneyan ji pêwendiya HTTP/2 ya ku berê bi domaina sereke re hatî damezrandin bikar bîne.

Ger hûn çavkaniyên partiya sêyemîn mêvandar nekin, wê hingê ji ber ku ew ê ji domainek ji ya sereke cûdatir werin barkirin, ew ê nekarin pêşî lê werin girtin. Ev ê bibe sedem ku ew bi hevûdu re ji bo firehiya xerîdar pêşbaziyê bikin. Ev dikare bibe sedema demên barkirinê ji bo naveroka krîtîk ji bo avakirina rûpelek ku ji ya ku dê di bin şert û mercên îdeal de were bidestxistin pir dirêjtir e. vir li ser pêşanîkirina HTTP/2 bipeyivin ku van tiştan pir baş rave dike.

Dikare were texmîn kirin ku karanîna taybetmendiyan di girêdanên çavkaniyên derveyî de preconnect dê di çareserkirina pirsgirêkê de bibe alîkar. Lêbelê, heke pir ji van girêdanên bi domên cihêreng re pir hebin, ew bi rastî dikare di kêliya herî girîng de xeta ragihandinê zêde bike.

Ger hûn çavkaniyên partiya sêyemîn bixwe mêvandar bikin, hûn dikarin kontrol bikin ka bi rastî van çavkaniyan çawa ji xerîdar re têne dayîn. Ango em behsa van tiştan dikin:

  • Hûn dikarin piştrast bikin ku algorîtmaya berhevkirina daneyê ya ku herî baş li her gerokê tê bikar anîn (Brotli/gzip).
  • Hûn dikarin ji bo çavkaniyên ku bi gelemperî ne bi taybetî dirêj in, di heman demê de bi pêşkêşkerên herî naskirî re dema vekêşanê zêde bikin (mînakek, nirxa têkildar ji bo nîşana GA-yê 30 hûrdem tête danîn).

Tewra hûn dikarin TTL-ê ji bo çavkaniyek dirêj bikin, bibêjin, salek bi tevlêkirina naveroka têkildar di nav stratejiya rêveberiya cache-ya xwe de (Haşe URL, versiyonê, hwd.). Em ê li jêr li ser vê biaxivin.

▍Parastina li dijî astengiyên di xebitandina karûbarên sêyemîn an girtina wan de

Aliyek din a balkêş a çavkaniyên xwe-mêvandariya sêyemîn ev e ku ew dihêle hûn xetereyên ku bi qutbûna karûbarên sêyemîn ve girêdayî ne kêm bikin. Ka em bihesibînin ku çareseriya ceribandina A/B-ya sêyemîn a ku hûn bikar tînin wekî skrîpta astengkirinê ya ku di beşa serî ya rûpelê de tê barkirin tê bicîh kirin. Ev skrîpt hêdî hêdî bar dike. Ger skrîpta têkildar nekare bar bike, dê rûpel vala bimîne. Ger barkirina wê demek pir dirêj bigire, rûpel dê bi derengî dirêj xuya bibe. An jî, bifikirin ku proje pirtûkxaneyek ku ji çavkaniyek CDN-ya sêyemîn hatî dakêşandin bikar tîne. Ka em bifikirin ku vê çavkaniyê li welatek diyarkirî têkçûnek an jî hate asteng kirin. Rewşeke wiha dê bibe sedema binpêkirina mantiqa malperê.

Ji bo ku hûn fêr bibin ka malpera we çawa dixebite dema ku hin karûbarê derveyî peyda nabe, hûn dikarin beşa SPOF li ser bikar bînin webpagetest.org.

Çavkaniyên sêyemîn ên xwe-mêvandar: ya baş, xirab, nebaş
Beşa SPOF li ser webpagetest.org

▍Li ser pirsgirêkên cachkirina materyalan di gerokan de çi? (nîşan: ew efsane ye)

Hûn dikarin bifikirin ku karanîna CDN-yên gelemperî bixweber dê bibe sedema performansa çavkaniyê çêtir, ji ber ku van karûbar xwedan torgilokên pir-kalîteyê ne û li çaraliyê cîhanê têne belav kirin. Lê bi rastî her tişt hinekî tevlihevtir e.

Ka em bibêjin çend malperên me yên cihê hene: website1.com, website2.com, website3.com. Hemî van malperan pirtûkxaneya jQuery bikar tînin. Em wê bi wan re bi karanîna CDN ve girêdidin, mînakî - googleapis.com. Hûn dikarin li bendê bin ku gerokker carekê pirtûkxaneyê dakêşe û cache bike, û dûv re wê li her sê malperan bikar bîne. Ev dikare barkirina li ser torê kêm bike. Dibe ku ev ê bihêle ku hûn li cîhek drav bidin hev û alîkariya baştirkirina performansa çavkaniyê bikin. Ji hêla pratîkî ve, her tişt cûda xuya dike. Mînakî, Safari taybetmendiyek jê re tê gotin Pêşîlêgirtina ckopandina Intelligent: Cache bişkojkên dualî li ser bingeha çavkaniya belgeyê û çavkaniya çavkaniya sêyemîn bikar tîne. vir gotara baş li ser vê mijarê.

lêkolînên kevn Yahoo и facebook, û her weha nûtirîn xwendin Paul Calvano, destnîşan dike ku çavkanî bi qasî ku em li bendê ne di kaşên gerokê de nayên hilanîn: "Di navbera dema cachekirina çavkaniyên projeyek bixwe û yên sêyemîn de ferqek cidî heye. Em li ser CSS û fontên malperê dipeyivin. Ango, 95% ji tîpên xwemalî ji hefteyek bêtir xwedan jiyanek cache ye, di heman demê de% 50 ji tîpên sêyemîn xwedan jiyanek cache ji hefteyekê kêmtir e! Ev yek sedemek berbiçav dide pêşdebirên malperê ku pelên fontê bixwe mêvandar bikin!”

Wekî encamek, heke hûn naveroka mirovên din mêvandar bikin, hûn ê pirsgirêkên performansê yên ku ji ber cachkirina gerokê ve têne çêkirin nabînin.

Naha ku me hêza xwe-mêvandariya partiya sêyemîn vegirtiye, ka em biaxivin ka meriv çawa pêkanîna baş a vê nêzîkatiyê ji ya xirab vedibêje.

Xerab: Şeytan di hûrguliyan de ye

Veguheztina çavkaniyên partiya sêyem li ser domaina xwe bixweber nayê kirin bêyî ku piştrast bikin ku çavkaniyên weha bi rêkûpêk hatine tomar kirin.

Yek ji pirsgirêkên sereke li vir dema cachkirinê ye. Mînakî, agahdariya guhertoyê di navên skrîptê yên partiya sêyemîn de wiha ye: jquery-3.4.1.js. Dê pelek wusa di pêşerojê de neyê guheztin, û di encamê de ev ê di cachkirina wê de bibe sedema ti pirsgirêkan.

Lê heke dema ku bi pelan re dixebitin hin pilana guhertoyê neyê bikar anîn, skrîptên cache, ku naveroka wan diguhezin dema ku navê pelê neguherî bimîne, dibe ku kevnar bibin. Ev dikare bibe pirsgirêkek ciddî, ​​ji ber ku ew, wek nimûne, rê nade ku pêlên ewlehiyê yên otomatîkî li skrîptên ku pêdivî ye ku xerîdar bi zûtirîn dem wergirin werin zêdekirin. Pêşvebir dê hewce bike ku hewil bide ku nivîsarên weha di cache de nûve bike. Digel vê yekê, ev dikare bibe sedema têkçûna serîlêdanê ji ber vê yekê ku koda ku li ser xerîdar ji cache tê bikar anîn ji guhertoya herî paşîn a kodê ya ku beşa serverê ya projeyê hatî sêwirandin cûda dibe.

Rast e, heke em li ser materyalên ku bi gelemperî têne nûve kirin biaxivin (rêveberên tagê, çareseriyên ji bo ceribandina A/B), wê hingê vegirtina wan bi karanîna amûrên CDN karek e ku dikare were çareser kirin, lê pir tevlihevtir e. Karûbarên mîna Qanûna Fermandaran, çareseriyek rêveberiya tagê, dema weşandina guhertoyên nû webhooks bikar tînin. Ev ji we re şiyana zorê dide rijandina cache-ê li ser CDN-ê, an jî, hîn çêtir, jêhatîbûna zorê ya nûvekirina hash an URL-ê dide we.

▍Radestkirina adaptî ya materyalan ji xerîdaran re

Wekî din, dema ku em li ser cachkirinê diaxivin, pêdivî ye ku em vê rastiyê bihesibînin ku mîhengên caching-ê yên ku li CDN-ê têne bikar anîn dibe ku ji bo hin çavkaniyên sêyemîn-sêyemîn ne maqûl bin. Mînakî, çavkaniyên weha dibe ku teknolojiya bîhnfirehiya karmendê bikarhêner bikar bînin (xizmetkirina guncan) da ku gerokên taybetî yên bi guhertoyên naverokê yên ku bi taybetî ji bo wan gerokan xweşbînkirî re xizmet bikin. Van teknolojiyên xwe dispêrin vegotinên birêkûpêk, an databasek agahdariya sernavê HTTP, da ku kapasîteyên gerokê kifş bikin. User-Agent. Gava ku ew dizanin ku ew bi kîjan gerokê re mijûl dibin, ew materyalên ku ji bo wê hatine çêkirin didin.

Li vir hûn dikarin du karûbaran bi bîr bînin. Ya yekem googlefonts.com e. Ya duyemîn polyfill.io ye. Karûbarê Google Fonts, ji bo hin çavkaniyek, kodên CSS-ê yên cihêreng, li gorî kapasîteyên gerokê peyda dike (girêdan dide çavkaniyên woff2 bi karanîna unicode-range).

Li vir encamên çend pirsên Google Fonts ên ji gerokên cihêreng hatine çêkirin hene.

Çavkaniyên sêyemîn ên xwe-mêvandar: ya baş, xirab, nebaş
Encama lêpirsîna Google Fonts ji Chrome

Çavkaniyên sêyemîn ên xwe-mêvandar: ya baş, xirab, nebaş
Encama lêpirsîna Google Fonts ji IE10 hate darve kirin

Polyfill.io tenê polyfillên ku jê re hewce dike dide gerokê. Ev ji ber sedemên performansê tê kirin.

Mînakî, bila em mêze bikin ka çi diqewime heke hûn daxwaza jêrîn ji gerokên cihêreng bimeşînin: https://polyfill.io/v3/polyfill.js?features=default

Di bersiva daxwazek wusa ya ku ji IE10 ve hatî darve kirin, dê 34 KB dane were wergirtin. Û bersiva wê, ji Chrome-ê hatî darve kirin, dê vala be.

Angry: Hin ramanên nepenîtiyê

Ev xal di rêza dawî de ye, lê ne bi kêmanî girîng e. Xal ev e ku xwe-mêvandariya çavkaniyên sêyemîn li ser qada sereke ya projeyê an li ser jêrdomîna wê dikare nepeniya bikarhêneran bixe xetereyê û bandorek neyînî li projeya sereke ya malperê bike.

Ger pergala weya CDN rast nehatibe mîheng kirin, dibe ku hûn dawî li çerezên domaina xwe ji karûbarek sêyemîn re bişînin. Ger parzûna rast di asta CDN-ê de neyê organîzekirin, wê hingê çerezên danişîna we, ku bi gelemperî di JavaScript-ê de nayên bikar anîn (bi httponly), dibe ku ji mêvandarek biyanî re were şandin.

Tiştê ku dikare bi şopînerên mîna Eulerian an Criteo re biqewime ev e. Dibe ku şopînerên partiya sêyemîn di cookie de nasnameyek yekta danîne. Ger ew beşek ji materyalên malperê bûn, dema ku bikarhêner bi çavkaniyên cûda yên malperê re dixebitî, wan dikaribû li gorî daxwaza xwe nasnameyê bixwînin.

Van rojan, piraniya gerokan parastina li dijî vî celebê tevgerê şopînerê vedihewîne. Wekî encamek, şopger naha teknolojiyê bikar tînin CNAME Cloaking, ji bo projeyên cûrbecûr wekî nivîsarên xwe maske dikin. Ango, şopînerên malperê ji xwediyên malperê re pêşkêş dikin ku ji bo domînek diyar CNAME li mîhengên xwe zêde bikin, navnîşana ku bi gelemperî wekî komek tîpên bêserûber xuya dike.

Her çend nayê pêşniyar kirin ku cookiesên malperê ji hemî subdomaînan re peyda bibin (mînak - *.website.com), gelek malper vê yekê dikin. Di vê rewşê de, çerezên weha bixweber ji şopînerek sêyemîn a veşartî re têne şandin. Wekî encamek, em êdî nikarin qala nepenîtiyê bikin.

Di heman demê de, heman tişt bi sernavên HTTP re jî diqewime Client-Hints, yên ku tenê ji qada sereke re têne şandin, ji ber ku ew dikarin ji bo afirandina bikar bînin şopa tiliya dîjîtal bikaranîvan. Piştrast bikin ku karûbarê CDN ya ku hûn bikar tînin van sernivîsan rast fîlter dike.

Encam

Ger hûn plan dikin ku di demek nêzîk de xwe-mêvandariya çavkaniyên sêyemîn bicîh bikin, bila ez çend şîretan bidim we:

  • Pirtûkxaneyên JS, fonts û pelên CSS yên herî girîng mêvandar bikin. Ev ê xetera têkçûna malperê an xirabkirina performansê ji ber çavkaniyek girîng a malperê ku ji ber xeletiya karûbarek sêyemîn tune ye kêm bike.
  • Berî ku hûn çavkaniyên sêyemîn li ser CDN-ê cache bikin, pê ewle bin ku dema ku navên pelên wan bi nav dikin cûreyek pergala guhertokirinê tê bikar anîn, an jî hûn dikarin çerxa jiyanê ya van çavkaniyan bi destan an bixweber vesazkirina cache CDN-ê dema ku guhertoyek nû diweşînin rêvebirin. senaryoyê.
  • Di derheqê CDN, servera proxy, û mîhengên cache de pir hişyar bin. Ev ê bihêle ku hûn proje an sernivîsên we neyên şandina cookies Client-Hints xizmetên partiya sêyemîn.

Xwendevanên delal! Ma hûn malzemeyên kesên din li ser serverên xwe mêvandar dikin ku ji bo xebata projeyên we pir girîng in?

Çavkaniyên sêyemîn ên xwe-mêvandar: ya baş, xirab, nebaş
Çavkaniyên sêyemîn ên xwe-mêvandar: ya baş, xirab, nebaş

Source: www.habr.com

Add a comment