Self-hosting thib peb cov peev txheej: qhov zoo, qhov phem, qhov phem

Nyob rau hauv xyoo tsis ntev los no, ntau thiab ntau lub platforms rau optimizing pem hauv ntej-kawg tej yaam num muaj cib fim rau tus kheej-hosting los yog proxying thib peb-tog peev txheej. Akamai tso cai rau koj teem cov kev txwv tshwj xeeb rau tus kheej tsim URLs. Cloudflare muaj Edge Workers thev naus laus zis. Fasterzine tau sau dua tshiab URLs ntawm nplooj ntawv kom lawv taw tes rau cov khoom siv thib peb nyob rau ntawm lub ntsiab ntawm lub xaib.

Self-hosting thib peb cov peev txheej: qhov zoo, qhov phem, qhov phem

Yog tias koj paub tias cov kev pabcuam thib peb siv hauv koj qhov project tsis hloov ntau zaus, thiab cov txheej txheem ntawm kev xa lawv mus rau cov neeg siv khoom tuaj yeem txhim kho, ces tej zaum koj yuav xav txog kev tso npe rau cov kev pabcuam no. Nrog rau txoj hauv kev no, koj tuaj yeem nqa cov peev txheej no los ze zog rau koj cov neeg siv thiab tau txais kev tswj hwm ntau dua ntawm lawv cov caching ntawm cov neeg siv khoom. Qhov no, ntxiv rau, tso cai rau koj los tiv thaiv cov neeg siv los ntawm cov teeb meem tshwm sim los ntawm "kev sib tsoo" ntawm qhov kev pabcuam thib peb lossis kev ua haujlwm tsis zoo ntawm nws txoj haujlwm.

Zoo: txhim kho kev ua tau zoo

Self-hosting lwm tus neeg cov peev txheej txhim kho kev ua tau zoo hauv txoj kev pom tseeb. Tus browser tsis tas yuav nkag mus rau DNS dua, nws tsis tas yuav tsim kom muaj kev sib txuas TCP thiab ua TLS tuav tes ntawm tus neeg thib peb sau. Koj tuaj yeem pom tias tus kheej hosting lwm tus neeg cov peev txheej cuam tshuam li cas los ntawm kev sib piv ob daim duab hauv qab no.

Self-hosting thib peb cov peev txheej: qhov zoo, qhov phem, qhov phem
Cov ntaub ntawv thib peb yog rub tawm los ntawm cov chaw sab nraud (ntxiv los ntawm ntawm no)

Self-hosting thib peb cov peev txheej: qhov zoo, qhov phem, qhov phem
Cov neeg thib peb cov peev txheej tau muab khaws cia rau hauv tib qhov chaw raws li cov khoom siv ntawm qhov chaw (ntxiv los ntawm ntawm no)

Qhov xwm txheej no kuj tau txhim kho los ntawm qhov tseeb tias qhov browser yuav siv lub peev xwm los nthuav dav thiab ua ntej cov ntaub ntawv los ntawm HTTP / 2 kev sib txuas uas twb tau tsim nrog lub ntsiab lus.

Yog tias koj tsis tuav cov kev pabcuam thib peb, tom qab ntawd txij li lawv yuav raug thauj los ntawm cov npe sib txawv ntawm qhov tseem ceeb, lawv tsis tuaj yeem ua qhov tseem ceeb. Qhov no yuav ua rau lawv sib tw nrog ib leeg rau tus neeg siv khoom bandwidth. Qhov no tuaj yeem ua rau lub sijhawm thauj khoom rau cov ntsiab lus tseem ceeb rau kev tsim nplooj ntawv uas ntev dua li qhov yuav ua tiav raws li qhov xwm txheej zoo. no tham txog HTTP/2 qhov tseem ceeb uas piav qhia txhua qhov no zoo heev.

Nws tuaj yeem xav tias kev siv cov cwj pwm hauv kev sib txuas rau cov khoom siv sab nraud preconnect yuav pab daws qhov teeb meem. Txawm li cas los xij, yog tias muaj ntau dhau ntawm cov kev sib txuas mus rau cov chaw sib txawv, nws tuaj yeem ua tau dhau qhov kev sib txuas lus ntawm lub sijhawm tseem ceeb tshaj plaws.

Yog tias koj tuav cov peev txheej thib peb ntawm koj tus kheej, koj tuaj yeem tswj hwm cov peev txheej no tau muab rau cov neeg siv khoom li cas. Namely, peb tab tom tham txog cov hauv qab no:

  • Koj tuaj yeem xyuas kom meej tias cov ntaub ntawv compression algorithm uas haum rau txhua qhov browser siv (Brotli / gzip).
  • Koj tuaj yeem nce lub sijhawm caching rau cov peev txheej uas feem ntau tsis ntev ntev, txawm tias nrog cov neeg muab kev paub zoo tshaj plaws (piv txwv li, tus nqi sib thooj rau GA tag yog teem rau 30 feeb).

Koj tuaj yeem txuas ntxiv TTL rau cov peev txheej rau, hais, ib xyoos los ntawm kev sib txuas cov ntsiab lus tseem ceeb rau hauv koj qhov kev tswj hwm caching (URL hashes, versioning, thiab lwm yam). Peb mam li tham txog qhov no hauv qab no.

▍ Kev tiv thaiv kev cuam tshuam hauv kev ua haujlwm ntawm cov kev pabcuam thib peb lossis lawv kaw

Lwm qhov nthuav dav ntawm tus kheej-tswj cov kev pabcuam thib peb yog tias nws tso cai rau koj los txo cov kev pheej hmoo cuam tshuam nrog cov kev pabcuam thib peb. Cia peb xav tias qhov thib peb-tog A / B xeem kev daws teeb meem uas koj siv yog siv los ua cov ntawv thaiv cov ntawv uas thauj khoom hauv lub taub hau ntawm nplooj ntawv. Cov ntawv no tau qeeb qeeb. Yog tias cov ntawv sau tsis raug thauj khoom, nplooj ntawv yuav khoob. Yog tias nws siv sijhawm ntev heev los thauj khoom, nplooj ntawv yuav tshwm sim nrog ncua sijhawm ntev. Los yog, xav tias qhov project siv lub tsev qiv ntawv rub tawm los ntawm lwm tus neeg sab nrauv CDN cov peev txheej. Cia peb xav txog tias cov peev txheej no tau ntsib kev ua tsis tiav lossis raug thaiv hauv qee lub tebchaws. Cov xwm txheej zoo li no yuav ua rau muaj kev ua txhaum cai ntawm lub xaib.

Txhawm rau paub seb koj lub xaib ua haujlwm li cas thaum qee qhov kev pabcuam sab nraud tsis muaj, koj tuaj yeem siv SPOF ntu ntawm webpagetest.org.

Self-hosting thib peb cov peev txheej: qhov zoo, qhov phem, qhov phem
SPOF ntu ntawm webpagetest.org

▍ Yuav ua li cas txog teeb meem nrog caching ntawm cov ntaub ntawv hauv browsers? (hint: nws yog myths xwb)

Tej zaum koj yuav xav tias kev siv pej xeem CDN yuav cia li ua rau muaj kev ua tau zoo dua, vim tias cov kev pabcuam no muaj kev sib raug zoo zoo thiab raug faib thoob ntiaj teb. Tab sis txhua yam yog qhov tseeb me ntsis nyuab dua.

Cia peb hais tias peb muaj ntau qhov chaw sib txawv: website1.com, website2.com, website3.com. Tag nrho cov chaw no siv lub tsev qiv ntawv jQuery. Peb txuas rau lawv siv CDN, piv txwv li - googleapis.com. Koj tuaj yeem cia siab tias tus browser yuav rub tawm thiab khaws cia lub tsev qiv ntawv ib zaug, thiab tom qab ntawd siv nws hla tag nrho peb qhov chaw. Qhov no tuaj yeem txo cov load ntawm lub network. Tej zaum qhov no yuav tso cai rau koj txuag nyiaj rau qhov chaw thiab pab txhim kho kev ua haujlwm. Los ntawm cov tswv yim pom, txhua yam zoo li txawv. Piv txwv li, Safari muaj lub npe hu ua Kev Tiv Thaiv Kev Txheeb Xyuas Kev Ntse: Lub cache siv dual tus yuam sij raws li lub hauv paus ntawm cov ntaub ntawv thiab qhov chaw ntawm cov khoom siv thib peb. no tsab xov xwm zoo ntawm lub ncauj lus no.

kev kawm qub Yahoo ΠΈ Facebook, nrog rau cov tsis ntev los no kawm Paul Calvano, qhia tias cov peev txheej tsis tau khaws cia hauv browser caches ntev npaum li peb xav tau: "Muaj qhov sib txawv loj ntawm lub sijhawm caching ntawm qhov project tus kheej thiab cov neeg thib peb cov peev txheej. Peb tab tom tham txog CSS thiab web fonts. Namely, 95% ntawm haiv neeg fonts muaj lub neej cache ntau tshaj ib lub lim tiam, thaum 50% ntawm cov neeg sab nrauv fonts muaj lub neej cache tsawg dua ib lub lim tiam! Qhov no ua rau cov neeg tsim tawm lub vev xaib muaj qhov laj thawj txaus los tuav cov ntaub ntawv font lawv tus kheej! "

Yog li ntawd, yog tias koj tuav lwm tus neeg cov ntsiab lus, koj yuav tsis pom muaj teeb meem kev ua tau zoo los ntawm browser caching.

Tam sim no peb tau hais txog qhov ua tau zoo ntawm tus kheej thib peb tus kheej hosting, cia peb tham txog yuav ua li cas qhia qhov kev coj ua zoo ntawm txoj hauv kev no los ntawm qhov phem.

Qhov phem: Dab ntxwg nyoog yog nyob rau hauv cov ntsiab lus

Tsiv cov peev txheej thib peb mus rau koj tus kheej lub npe tsis tuaj yeem ua tiav yam tsis tau ua kom ntseeg tau tias cov peev txheej zoo li cached.

Ib qho teeb meem tseem ceeb ntawm no yog lub sijhawm caching. Piv txwv li, cov ntaub ntawv version muaj nyob rau hauv cov ntawv thib peb cov npe zoo li no: jquery-3.4.1.js. Xws li cov ntaub ntawv yuav tsis hloov yav tom ntej, thiab vim li ntawd qhov no yuav tsis ua rau muaj teeb meem nrog nws cov caching.

Tab sis yog tias qee lub tswv yim versioning tsis siv thaum ua haujlwm nrog cov ntaub ntawv, cached scripts, cov ntsiab lus uas hloov thaum lub npe cov ntaub ntawv tseem tsis hloov, tej zaum yuav dhau los. Qhov no tuaj yeem yog qhov teeb meem loj, vim nws, piv txwv li, tsis tso cai rau kev ruaj ntseg automated thaj ua rau thaj ntxiv rau cov ntawv sau uas cov neeg siv yuav tsum tau txais sai li sai tau. Tus tsim tawm yuav tau siv zog los hloov kho cov ntawv sau hauv lub cache. Tsis tas li ntawd, qhov no tuaj yeem ua rau daim ntawv thov tsis ua haujlwm vim qhov tseeb tias cov cai siv ntawm tus neeg siv khoom los ntawm lub cache txawv ntawm qhov tseeb version ntawm cov cai uas tus neeg rau zaub mov ib feem ntawm qhov project tsim.

Muaj tseeb tiag, yog tias peb tham txog cov ntaub ntawv uas tau hloov kho tas li (tag nrho cov thawj coj, cov kev daws teeb meem rau A / B kuaj), ces caching lawv siv CDN cov cuab yeej yog ib txoj hauj lwm uas yuav daws tau, tab sis yog ntau nyuaj. Cov kev pabcuam zoo li Commanders Act, kev daws teeb meem tag, siv webhooks thaum tshaj tawm cov ntawv tshiab. Qhov no muab koj lub peev xwm los quab yuam lub cache flush ntawm CDN, lossis, zoo dua, muaj peev xwm yuam kom muaj hash lossis URL hloov tshiab.

▍ Adaptive xa khoom rau cov neeg siv khoom

Tsis tas li ntawd, thaum peb tham txog caching, peb yuav tsum tau coj mus rau hauv tus account qhov tseeb hais tias lub caching chaw siv nyob rau hauv CDN tej zaum yuav tsis haum rau qee qhov kev pab cuam thib peb. Piv txwv li, cov peev txheej zoo li no tuaj yeem siv tus neeg siv tus neeg sawv cev sniffing (adaptive serving) thev naus laus zis los ua haujlwm rau cov browsers tshwj xeeb nrog cov qauv ntawm cov ntsiab lus optimized tshwj xeeb rau cov browsers. Cov thev naus laus zis no tso siab rau cov lus qhia tsis tu ncua, lossis cov ntaub ntawv ntawm HTTP header cov ntaub ntawv, txhawm rau txheeb xyuas qhov browser muaj peev xwm. User-Agent. Thaum lawv paub tias qhov browser twg lawv cuam tshuam nrog, lawv muab cov ntaub ntawv tsim los rau nws.

Ntawm no koj tuaj yeem nco txog ob qhov kev pabcuam. Thawj qhov yog googlefonts.com. Qhov thib ob yog polyfill.io. Cov kev pabcuam Google Fonts muab, rau qee qhov peev txheej, ntau yam CSS code, nyob ntawm qhov muaj peev xwm ntawm browser (muab txuas rau woff2 cov peev txheej siv unicode-range).

Nov yog cov txiaj ntsig ntawm ob peb cov lus nug Google Fonts ua los ntawm cov browser sib txawv.

Self-hosting thib peb cov peev txheej: qhov zoo, qhov phem, qhov phem
Google Fonts cov lus nug tshwm sim los ntawm Chrome

Self-hosting thib peb cov peev txheej: qhov zoo, qhov phem, qhov phem
Qhov tshwm sim ntawm Google Fonts query ua los ntawm IE10

Polyfill.io muab qhov browser tsuas yog cov polyfills nws xav tau. Qhov no yog ua los ntawm kev ua haujlwm zoo.

Piv txwv li, cia peb saib seb yuav ua li cas yog tias koj khiav qhov kev thov hauv qab no los ntawm cov browser sib txawv: https://polyfill.io/v3/polyfill.js?features=default

Hauv kev teb rau qhov kev thov ua tiav los ntawm IE10, 34 KB ntawm cov ntaub ntawv yuav tau txais. Thiab cov lus teb rau nws, raug tua los ntawm Chrome, yuav khoob.

Npau taws: Qee qhov kev xav txog kev ceev ntiag tug

Cov ntsiab lus no yog qhov kawg hauv kev txiav txim, tab sis tsis yog qhov tseem ceeb tshaj plaws. Lub ntsiab lus yog tias tus kheej-hosting ntawm cov neeg thib peb cov peev txheej ntawm qhov tseem ceeb ntawm qhov project lossis ntawm nws cov subdomain tuaj yeem cuam tshuam kev ceev ntiag tug ntawm cov neeg siv thiab cuam tshuam tsis zoo rau lub vev xaib tseem ceeb.

Yog tias koj lub CDN tsis raug teeb tsa kom raug, koj tuaj yeem xa koj cov ntawv sau cov ncuav qab zib mus rau qhov kev pabcuam thib peb. Yog tias kev lim dej tsis raug teeb tsa ntawm qib CDN, tom qab ntawd koj cov ncuav qab zib sib tham, uas ib txwm siv tsis tau hauv JavaScript (nrog rau httponly), tej zaum yuav raug xa mus rau tus tswv tsev txawv teb chaws.

Qhov no yog raws nraim li cas tuaj yeem tshwm sim nrog cov neeg taug qab xws li Eulerian lossis Criteo. Lwm tus neeg taug qab tuaj yeem tau teeb tsa tus cim tshwj xeeb hauv cov ncuav qab zib. Yog tias lawv yog ib feem ntawm cov ntaub ntawv ntawm qhov chaw, lawv tuaj yeem nyeem tus cim ntawm lawv qhov kev txiav txim siab thaum tus neeg siv tau ua haujlwm nrog ntau lub vev xaib.

Niaj hnub no, feem ntau browsers suav nrog kev tiv thaiv tus cwj pwm zoo li no. Raws li qhov tshwm sim, trackers tam sim no siv thev naus laus zis CNAME Cloaking, masquerading raws li lawv tus kheej scripts rau ntau yam project. Namely, trackers muab cov tswv ntawm qhov chaw ntxiv CNAME rau lawv qhov chaw rau qee qhov chaw, qhov chaw nyob uas feem ntau zoo li cov cim random.

Txawm hais tias nws tsis pom zoo kom ua cov ncuav qab zib lub vev xaib muaj rau txhua tus subdomains (piv txwv li - *.website.com), ntau qhov chaw ua qhov no. Hauv qhov no, cov ncuav qab zib zoo li no tau xa mus rau tus neeg thib peb tus neeg taug qab uas tsis pom. Yog li ntawd, peb tsis tuaj yeem tham txog kev ceev ntiag tug ntxiv lawm.

Tsis tas li ntawd, tib yam tshwm sim nrog HTTP headers Client-Hints, uas tsuas yog xa mus rau lub ntsiab tseem ceeb, txij li lawv tuaj yeem siv los tsim digital fingerprint neeg siv. Xyuas kom tseeb tias CDN cov kev pabcuam koj siv lim cov headers kom raug.

Cov txiaj ntsim tau los

Yog tias koj tab tom npaj yuav siv tus kheej hosting ntawm cov chaw thib peb sai sai, cia kuv muab qee cov lus qhia rau koj:

  • Hwm koj cov tsev qiv ntawv JS tseem ceeb tshaj plaws, fonts thiab CSS cov ntaub ntawv. Qhov no yuav txo qhov kev pheej hmoo ntawm qhov chaw tsis ua haujlwm lossis kev ua haujlwm tsis zoo vim muaj peev txheej tseem ceeb rau lub xaib tsis muaj vim yog qhov ua txhaum ntawm kev pabcuam thib peb.
  • Ua ntej koj cache thib peb cov peev txheej ntawm CDN, nco ntsoov tias qee yam ntawm cov txheej txheem versioning yog siv thaum sau npe lawv cov ntaub ntawv, lossis koj tuaj yeem tswj hwm lub neej ntawm cov peev txheej no los ntawm manually lossis rov pib dua CDN cache thaum tshaj tawm cov ntawv tshiab ntawm tsab ntawv.
  • Ceev faj heev txog koj lub CDN, npe neeg rau zaub mov, thiab cache chaw. Qhov no yuav cia koj tiv thaiv koj qhov project lossis headers los ntawm kev xa cov ncuav qab zib Client-Hints cov kev pabcuam thib peb.

Nyob zoo nyeem! Koj puas tuav lwm tus neeg cov ntaub ntawv ntawm koj cov servers uas tseem ceeb heev rau kev ua haujlwm ntawm koj cov haujlwm?

Self-hosting thib peb cov peev txheej: qhov zoo, qhov phem, qhov phem
Self-hosting thib peb cov peev txheej: qhov zoo, qhov phem, qhov phem

Tau qhov twg los: www.hab.com

Ntxiv ib saib