ስታቲክ ጣቢያዎች እንደገና ሲታተሙ ሥራ ላይ ይቆያሉ
ስታቲክ ጣቢያን በMythex እንደገና ማተም ቀድሞ የቀጥታ ፋይሎቹን ይሰርዝ፣ ከዚያም አዲሱን ግንባታ ይጭን ነበር፤ ስለዚህ ለመጫኑ በሙሉ ጊዜ አንዳንድ ጎብኚዎች የ404 ገጽ ወይም ስክሪፕቶቹ የጠፉበት ገጽ ያዩ ነበር። ያልተሳካ ጭነት ጣቢያውን ባዶ ወይም በግማሽ አዲስ ሊተወው ይችል ነበር። አሁን አዲሱ ግንባታ በድሮው ላይ ይጻፋል፤ ገጾቹ ለመጨረሻ ይመጣሉ፤ የቀሩት ፋይሎች ከጥቂት ደቂቃዎች በኋላ ይወገዳሉ። ሁለተኛው ማስተካከያ እንደገና ማተም ከአንድ ደቂቃ ይልቅ በሰከንዶች ውስጥ እንዲታይ ያደርጋል፤ ለአርማ ያሉ ፋይሎች ደግሞ እስከ አንድ ቀን ሊወስዱ ይችላሉ።
ስታቲክ ጣቢያ እንዴት እንደሚቀርብ
ስታቲክ ጣቢያ ፋይሎች ብቻ ያሉት ነው፤ HTML ገጾች፣ JavaScript፣ CSS፣ ምስሎች። በMythex ላይ ስታተሙ እንገነባዋለን፤ ውጤቱን ለጣቢያችሁ በሚሆን አቃፊ ስር ወደ object storage እንጭነዋለን፤ ከዚያም በedge አውታረ መረብ እናቀርበዋለን። edge ማለት ጎብኚዎቻችሁ ቅርብ የሆኑ አገልጋዮች ናቸው፤ ፋይሎችን ከማከማቻው እያመጡ ለተወሰነ ጊዜ ቅጂ ያስቀምጣሉ። (ለአዲስ ሰው፣ CDN ምንድን ነው የሚለው መመሪያ ሀሳቡን ይሸፍናል።)
ሁለት ነገሮች ተሳስተው ነበር፤ የእንደገና ማተም ሂደቱ ፋይሎቹን የሚቀይርበት ቅደም ተከተል፣ እና የድሮ ቅጂዎች ምን ያህል ጊዜ እንደሚቆዩ።
ችግር 1፦ ጭነቱ ጣቢያውን አስቀድሞ ባዶ ያደርግ ነበር
እንደገና ማተም በአቃፊው ያለውን ሁሉ ይሰርዝና አዲሱን ግንባታ ይጭን ነበር። ጭነቱ እስኪጠናቀቅ ድረስ፣ 250 ፋይሎች ያሉት ጣቢያ በሙከራችን 12 ሰከንድ ወስዷል፤ በedge ላይ ያልተቀመጠ ጥያቄ ያለው ጎብኚ 404 ያገኝ ነበር፤ ወይም ስክሪፕቶቹ 404 የሚመልሱበት HTML ገጽ ያገኝ ነበር።
ያልተሳካ ጭነት የከፋ ነበር። አቃፊው አስቀድሞ ባዶ ነበር፤ በሁለቱ የጭነት መንገዶች በአንዱ አዲሱ index.html ያልተሳካው ፋይል ከመድረሱ በፊት ሊገባ ይችል ነበር። እንደ ያልተሳካ የተዘገበ ማተም በቀጥታ የግማሽ አዲስ ጣቢያ ሊተው ይችል ነበር።
መፍትሄው፦ በላዩ ጻፉ፣ ገጾቹን ለመጨረሻ፣ ቀሪዎቹን በኋላ አስወግዱ
- መጀመሪያ አትሰርዙ። አዲሱ ግንባታ በድሮው ላይ ይጫናል።
- ንብረቶቹ ከገጾቹ በፊት። ገጽ የሚፈልጋቸውን ስክሪፕቶችና ስታይሎች በስም ይጠቅሳል፤ ስለዚህ ገጾቹ ለመጨረሻ ይጫናሉ። አዲሶቹ ገጾች እስኪገቡ ድረስ ጎብኚዎች ድሮውን ገጽ ያያሉ፤ እሱም ድሮዎቹን ንብረቶች ይጠቅሳል፤ እነዚያ ደግሞ አሁንም አሉ። አዲሶቹ ገጾች ሲገቡ የሚጠቅሷቸው አዳዲስ ንብረቶች ቀድመው ተቀምጠዋል።
- ቀሪዎቹን በኋላ አስወግዱ። ከመጫኑ በፊት ጣቢያው ምን እንደሚይዝ እንዘረዝራለን። ጭነቱ በተሳካ ጊዜ ከሶስት ደቂቃ በኋላ፣ በዝርዝሩ ውስጥ ያለ እና አዲሱ ግንባታ ያልጻፈው ማንኛውም ነገር ይሰረዛል። ሶስት ደቂቃ በedge እና በአሳሽ ላይ ገጽ ሊቀመጥ ከሚችለው 60 ሰከንድ ይረዝማል፤ ስለዚህ ድሮውን ገጽ የያዘ ጎብኚ የሚጠቅሳቸውን ንብረቶች ያገኛል።
- ጥርጣሬ ካለ ምንም አትሰርዙ። ጭነቱ በፊት ዝርዝሩን መውሰድ ካልተሳካ ምንም አይሰረዝም። ቀሪ ፋይሎች ጉዳት የላቸውም፤ ቀጣዩ ማተም ያጸዳቸዋል። ምን እንደነበረ ሳያውቁ መሰረዝ ጣቢያ ባዶ እንዲሆን የሚያደርግ ነው።
ያልተሳካ ጭነት አሁን ቀደም ያለውን ጣቢያ ልክ እንደነበረ ይተዋል።
ይህን ከመጀመሪያ እስከ መጨረሻ በአካባቢያችን ሞክረነዋል፤ ትክክለኛውን የጭነት ስክሪፕት፣ ትክክለኛውን የመጫኛ መንገድ እና ትክክለኛውን ማከማቻ አገልግሎት፣ ቀዝቃዛ የedge መሸጎጫ ያላቸውን ጎብኚዎች በመጠቀም። በድሮው ኮድ 91 ውስጥ 55 ጉብኝቶች በእንደገና ማተም ወቅት ተበላሹ፤ 92 ውስጥ 61 ደግሞ በተሳካ ባልሆነ ጊዜ። በአዲሱ ኮድ፣ በሁለቱም የጭነት መንገዶች፣ በአንድ ያልተሳካ ጭነት እና በቀጣዩ ማተም ላይ ወደ 3,500 ጉብኝቶች 0 ተበላሹ፤ ቀሪዎቹ ፋይሎች ብቻ ተወግደዋል።
ችግር 2፦ እንደገና ማተም ለመታየት ብዙ ጊዜ ይወስድ ነበር
ጭነቱ በትክክል ሲሄድም ለውጦች ለመታየት ቀርፋፋ ነበሩ። edge ገጽን ለ60 ሰከንድ፣ ሌላውን ፋይል ሁሉ ለአንድ ቀን ያስቀምጥ ነበር፤ አሳሾችም ተመሳሳይ እንዲያደርጉ ይነግር ነበር። ስም የማይቀየርባቸው ፋይሎች እንደ logo.png፣ ፎንት፣ ወይም ከpublic/ አቃፊ የሚመጣ ማንኛውም ነገር፣ እንደገና ከማተም በኋላ እስከ አንድ ቀን የድሮውን ስሪት ሊያሳዩ ይችሉ ነበር።
መፍትሄው፦ በግንባታው ስር የፋይል ቅጂዎች
edge ጣቢያው የት እንዳለ ከAPI ሲጠይቅ፣ መልሱ አሁን ማተም በደረሰ ቁጥር የሚቀየር የግንባታ ምልክት ያካትታል። edge ቅጂዎቹን በዚያ ምልክት ስር ያስቀምጣል። ስለዚህ ማተም edge-ው የ30 ሰከንድ ፍለጋው ሲያልቅ አዲስ የመሸጎጫ ቁልፎች ስብስብ ይሆናል። የድሮ ቅጂዎች ዳግም አይገኙም፤ ስለዚህ edge ቅጂዎችን ለአንድ ቀን ማቆየት ይችላል፤ ያንን ያስቀመጠውን ማተም ካለፈ ቅጂ ፈጽሞ አያቀርብም።
አሳሾች ሁለት የተለዩ ህጎች ያገኛሉ፦
- የተሰራ (hashed) የግንባታ ውጤት ለምሳሌ
assets/index-CzLcxDO8.jsያሉ ፋይሎች፣ ይዘቱ ሲቀየር ስማቸውም ይቀየራል፤ ለአንድ ዓመት ይቀመጣሉ እና immutable ተብለው ይመዘገባሉ። በዚያ ስም ፈጽሞ ያረጁ ሊሆኑ አይችሉም። - ሌላ ሁሉ፣ ማለትም ገጾችና ስም የማይቀየርባቸው ፋይሎች እንደ አርማ፣
no-cacheይባላሉ፤ ይህ ማለት “ከመጠቀም በፊት ፈትሽ” ማለት ነው። ምንም ካልተቀየረ መልሱ ትንሽ304 Not Modifiedያለ አካል ነው፤ አሁን የአሳሹንIf-None-Matchፍተሻ እናከብራለን።
ሁለቱን ለመለየት ጥንቃቄ ያስፈልጋል። public/assets/ ያለ ፋይል ስሙን እንደያዘ ይቀራል፤ assets/logo.png ለአንድ ዓመት መሸጎጥ ድሮውን አርማ ለአንድ ዓመት ይቆልፈዋል። ስለዚህ ፋይል የተሰራ ተብሎ የሚቆጠረው በግንባታ ውጤት አቃፊ ውስጥ እና ስሙ እንደ ሃሽ የሚመስል ክፍል ካለው ብቻ ነው፤ ተራ ቃል አይደለም።
በአካባቢ፣ አዲሱ ገጽና አርማው ከማተም በኋላ በ6 ሰከንድ ታዩ። ከዚህ በፊት ለገጹ 60 ሰከንድ፣ ለአርማው አንድ ቀን ነበር።
ሁለት ትናንሽ ማስተካከያዎች በመንገድ ላይ
- ከHEAD ጥያቄዎች ባዶ ገጾች።
HEADጥያቄ ገጽ ራስጌዎቹን ያለ አካሉ ይጠይቃል። ባዶ ምላሾችን እንሸጎጥ ነበር፤ ስለዚህ ቀጣዩ ጎብኚ ባዶ ገጽ ያገኝ ነበር።HEADምላሾች አሁን አይሸጎጡም። - “ምንም የለም” ለሚለው እውነተኛ ገጽ። መተግበሪያ የሌለበት አድራሻ ቀድሞ ባለ ቀላል ጽሑፍ “This published app is offline or the link was not found” እና 502 ኮድ ይመልስ ነበር። አሁን ትክክለኛ ገጽ ያገኛል፤ “There's no app here” የሚል፣ 404 ሁኔታ እና ባለቤቱ ወደ Mythex የሚመለስበት መንገድ። ያልታወቁ የራሳቸው ጎራዎችም ተመሳሳይ ገጽ ያገኛሉ።
ከዚህ የወሰድነው
- ቅደም ተከተል የትክክለኛነቱ አካል ነው። ተመሳሳይ ፋይሎች በተለያየ ቅደም ተከተል ሲጫኑ የተበላሸ እና የሚሰራ ጣቢያ ልዩነት ይፈጥራሉ።
- አስወግዱ በኋላ፣ እና የምታውቁትን ብቻ። ጭነቱ ከመድረሱ በፊት በተወሰደ ዝርዝር ማጽዳት ደህና ነው፤ አቃፊን ባዶ አድርጎ ጭነቱ እንዲጠናቀቅ መጠበቅ ግን አይደለም።
- በጊዜ ሳይሆን በስሪት መሸጎጥ። የማብቂያ ጊዜ ይዘቱ መቼ እንደሚቀየር መገመት ነው። ከግንባታው ጋር የሚቀየር ቁልፍ ግን እውነታ ነው።
ተዛማጅ፦ የታተመ መተግበሪያችሁ እንደገና ሲያትሙት ሥራ ላይ ይቆያል። ስለማተም ተጨማሪ በሰነዶቹ ውስጥ ይገኛል።