Blogg

Kyrrstæðar síður haldast uppi á meðan þær eru birtar aftur

Að birta kyrrstæða síðu aftur á Mythex eyddi áður skránum í beinni áður en nýja byggingin var hlaðin upp, þannig að í þann tíma sem upphleðslan tók fengu sumir gestir 404-síðu eða HTML-síðu þar sem skriftur vantaði. Misheppnuð upphleðsla gat skilið síðuna eftir tóma eða hálf nýja. Nú er nýja byggingin skrifuð yfir þá gömlu, síður síðastar og leifar fjarlægðar nokkrum mínútum síðar. Önnur lagfæring gerir það að verkum að endurbirting birtist innan sekúndna í stað mínútu, eða, fyrir skrár eins og merki, allt að degi.

Hvernig kyrrstæð síða er þjónuð

Kyrrstæð síða er síða sem eru bara skrár: HTML-síður, JavaScript, CSS og myndir. Þegar þú birtir slíka síðu á Mythex byggjum við hana, hlöðum úttakinu upp í hlutageymslu í möppu fyrir síðuna þína og þjónum henni í gegnum edge-net, það er þjóna nálægt gestunum sem sækja skrár úr geymslunni og geyma afrit af þeim í nokkurn tíma. (Ef þetta er nýtt fyrir þér fjallar leiðarvísir okkar um hvað CDN er um hugmyndina.)

Tvennt var rangt: röðin sem endurbirting breytti skrám í, og hversu lengi gömul afrit voru geymd.

Vandamál 1: upphleðslan tæmdi síðuna fyrst

Endurbirting eyddi öllu í möppu síðunnar og hlóð síðan nýju byggingunni upp. Meðan upphleðslan stóð yfir, 12 sekúndur fyrir 250 skráa síðu í prófunum okkar, fékk gestur sem beiðni var ekki þegar í skyndiminni á edge-inu 404-svar eða HTML-síðu þar sem skriftur skiluðu 404.

Misheppnuð upphleðsla var verri. Mappan var þegar tóm, og á annarri af tveimur upphleðsluleiðum gat nýja index.html lent á undan skránni sem mistókst. Birting sem var tilkynnt sem misheppnuð gat skilið hálf nýja síðu eftir í loftinu.

Lagfæringin: skrifa yfir, síður síðastar, hreinsa síðar

  1. Ekki eyða fyrst. Nýja byggingin er hlaðin upp ofan á þá gömlu.
  2. Eignir fyrst, síðan síður. Síða nefnir þær skriftur og stílsnið sem hún þarf, þannig að síður fara upp síðastar. Þangað til nýju síðurnar lenda fá gestir gömlu síðuna, sem nefnir gömlu eignirnar, sem eru enn til staðar. Þegar nýju síðurnar lenda eru nýju eignirnar sem þær nefna þegar komnar á sinn stað.
  3. Fjarlægðu leifar síðar. Áður en upphleðslan hefst skráum við hvað síðan samanstendur af. Þremur mínútum eftir vel heppnaða upphleðslu er öllu á þeim lista sem nýja byggingin skrifaði ekki yfir eytt. Þrjár mínútur eru lengri en þær 60 sekúndur sem síða gæti verið í skyndiminni á edge-inu og í vafranum, þannig að gestur sem enn heldur á gömlu síðunni finnur eignirnar sem hún nefnir.
  4. Ef vafi leikur á, eyddu engu. Ef skráin fyrir upphleðsluna mistekst er ekkert fjarlægt. Skrár sem eftir sitja skaða ekki, og næsta birting hreinsar þær. Að eyða án þess að vita hvað var þarna er leiðin til þess að síða verður tóm.

Misheppnuð upphleðsla skilur nú fyrri síðuna eftir nákvæmlega eins og hún var.

Við prófuðum þetta frá enda til enda á staðnum, með raunverulegu upphleðsluskriftunni, raunverulegu upphleðsluleiðinni og raunverulegri geymsluþjónustu, og gestum sem komu með kalt edge-skyndiminni. Með gamla kóðanum voru 55 af 91 heimsóknum bilaðar meðan á endurbirtingu stóð og 61 af 92 við misheppnaða. Með nýja kóðanum voru 0 bilaðar í um 3.500 heimsóknum sem náðu yfir báðar upphleðsluleiðirnar, misheppnaða upphleðslu og birtinguna þar á eftir, og nákvæmlega leifarskrárnar voru hreinsaðar.

Vandamál 2: endurbirting tók of langan tíma að birtast

Jafnvel þegar upphleðslan gekk vel voru breytingar seinar að birtast. Edge-ið geymdi afrit af síðu í 60 sekúndur og af öllum öðrum skrám í einn dag, og sagði vöfrum að gera það sama. Skrár með föstu nafni, eins og logo.png, leturgerð eða allt úr public/-möppu, gátu sýnt gömlu útgáfuna í allt að einn dag eftir endurbirtingu.

Lagfæringin: skráaafrit undir byggingunni

Þegar edge-ið spyr API-ið okkar hvar síða er, inniheldur svarið nú byggingarmerki sem breytist í hvert sinn sem birting lendir. Edge-ið geymir afrit sín undir þessu merki. Birting verður því að alveg nýju setti af skyndiminnislyklum um leið og 30 sekúndna uppflettingin á edge-inu rennur út. Gömul afrit finnast einfaldlega aldrei aftur, þannig að edge-ið getur geymt afrit í einn dag án þess að þjóna nokkru sinni einu sem var á undan birtingunni sem skipti því út.

Vafrar fá tvær mismunandi reglur:

  • Hashaðar byggingarúttök, skrár eins og assets/index-CzLcxDO8.js þar sem nafnið breytist þegar efnið breytist, eru geymdar í eitt ár og merktar óbreytanlegar. Undir því nafni getur þær aldrei verið úreltar.
  • Allt annað, síður og skrár með föstu nafni eins og merki, er merkt no-cache, sem þýðir „athugaðu áður en þú notar“. Ef ekkert breyttist er svarið lítið 304 Not Modified án efnis, nú þegar við virðum If-None-Match-athugun vafrans.

Að greina þetta í sundur krefst varkárni: skrá sem er afrituð úr public/assets/ heldur sínu nafni, og ef assets/logo.png væri geymt í eitt ár myndi gamla merkið festast í eitt ár. Skrá telst því aðeins hashuð ef hún er í byggingarúttaksmöppu og nafn hennar hefur hluta sem lítur út eins og hass, en ekki venjulegt orð.

Í prófun á staðnum sást nýja síðan og merkið 6 sekúndum eftir að birtingin fór í loftið. Áður voru það 60 sekúndur fyrir síðuna og einn dagur fyrir merkið.

Tvær minni lagfæringar á leiðinni

  • Auðar síður af HEAD-beiðnum. HEAD-beiðni biður um hausa síðu án efnisins. Við vorum að geyma þau tómu svör í skyndiminni, þannig að næsti gestur á þeirri síðu fékk auða síðu. HEAD-svör eru ekki lengur geymd í skyndiminni.
  • Alvöru síða fyrir „ekkert hér“. Vistfang án forrits fékk áður venjulegan textatexta „This published app is offline or the link was not found“ með 502-villukóða. Nú fær það viðeigandi síðu, „There's no app here“, með 404-stöðu og leið til baka á Mythex fyrir eigandann. Óþekkt sérsniðin lén fá sömu síðu.

Það sem við lærðum

  • Röð skiptir máli fyrir réttleika. Sömu skrárnar, hlaðnar upp í annarri röð, eru munurinn á bilaðri síðu og virkri.
  • Eyddu seint, og aðeins því sem þú veist um. Hreinsun með lista sem tekinn er fyrir upphleðsluna er örugg; að tæma möppu og vona að upphleðslan klárist er það ekki.
  • Geymdu eftir útgáfu, ekki eftir tíma. Gildistími er ágiskun um hvenær efni breytist. Lykill sem breytist með byggingunni er staðreynd.

Tengt: forritið þitt sem er birt helst uppi á meðan þú birtir það aftur. Frekari upplýsingar um birtingu eru í skjölunum.

Mythex · Pricing · Smíðaðu hvað sem er með gervigreind · Sniðmát fyrir vefsíður og forrit · Mythex í samanburði · Orðasafn um forritasmíði með gervigreind · Ókeypis verkfæri fyrir forritasmíði með gervigreind · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Հայերեն Bahasa Indonesia Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių Latviešu Македонски മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Русский Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(香港) 繁體中文(台灣)