Kuhamisha utengenezaji wa picha ndogo (thumbnails) kutoka kwenye mfumo wa PHP backend kwenda Cloudflare Workers kuliondoa mzigo wote wa CPU kwenye seva asilia (origin server) kwa tovuti ya kuhifadhi video inayotumikia picha mamilioni kwa siku. Mabadiliko hayo pia yalihamisha ucheleweshaji (latency) wa usindikaji wa picha kutoka kwenye kituo cha data (data center) kwenda kwenye edge, hivyo kupunguza muda wa majibu na kufanya gharama za bandwidth kutabirika.

Kwa nini mfumo wa zamani ulishindwa

Tovuti hiyo, ambayo ni jukwaa linaloonyesha maelfu ya video, huweka picha ndogo hadi 40 kwenye ukurasa mmoja. Kila picha ndogo hubadilishwa ukubwa kulingana na mahitaji na skripti ya PHP inayosoma faili asilia na kuipunguza au kuikuza. Wakati roboti za utafutaji (crawlers) zilipotembelea tovuti, seva ya backend ilikuwa inakwama.

Usindikaji wa Edge unatatua mahitaji makuu matano

API ya picha ndogo ya kiwango cha uzalishaji lazima ishughulikie:

  • Fan-in – kuvuta picha asilia kutoka kwa wenyeji (hosts) wengi wa tatu.
  • Fan-out – kuzalisha ukubwa mbalimbali (k.m., kadi za 320 px, picha kuu za 640 px).
  • Format negotiation – kutoa WebP au AVIF wakati kivinjari kinazikubali ili kupunguza bandwidth.
  • Cache – kuhakikisha ombi la kwanza linaweza kuwa na gharama lakini kila ombi linalofuata ni bure.
  • Security – kuzuia mtu yeyote asitumie huduma hiyo vibaya kusindika picha yoyote ile.

Cloudflare Workers zinashughulikia kila hoja bila kugusa CPU ya seva asilia:

  1. Proximity – Workers hutendeka katika vituo vya data vilivyo karibu na mtumiaji, hivyo picha iliyosindikwa huchukua njia fupi zaidi.
  2. Built-in Image Resizing – Kipengele cha Image Resizing cha jukwaa hili hufanya kazi ya pikseli, hivyo kuondoa hitaji la maktaba (library) maalum.
  3. Cache API – Workers huhifadhi picha iliyobadilishwa ukubwa kwenye edge; baada ya ombi la kwanza, edge huitoa moja kwa moja.
  4. Programmable security – Skripti ndogo huhakiki saini za HMAC, hutelezea orodha ya kuruhusiwa (allow-list) ya majina ya wenyeji (hostnames) na upana, na kusawazisha funguo za cache (cache keys) ili kuepuka sumu ya cache (cache poisoning).

Jinsi mfumo unavyofanya kazi

  1. Origin hutengeneza URL zilizotiwa saini – Backend hushikilia funguo ya siri na kuongeza saini ya HMAC kwenye kila ombi la picha ndogo. URL pia hujumuisha upana na muundo unaohitajika.
  2. Worker huhakiki saini – Ikipokelewa, Worker huhesabu upya HMAC kwa kutumia siri iliyoshirikiwa. Ikiwa saini haipo au ni mbaya, ombi linakataliwa, hivyo kuzuia matumizi mabaya.
  3. Utekelezaji wa orodha ya kuruhusiwa – Skripti hukagua ikiwa jina la wenyeji (hostname) wa chanzo lipo kwenye orodha iliyowekwa na ikiwa upana unaombwa ni mmoja wa ukubwa unaosaidiwa. Hii huzuia wenyeji wenye nia mbaya kuhifadhiwa kwenye cache.
  4. Usawazishaji wa funguo za cache – Saini yenyewe huondolewa kwenye funguo ya cache; funguo hiyo huwa na URL ya chanzo, upana, na muundo pekee. Hii huongeza nafasi kwamba watumiaji tofauti wanaoomba picha ile ile wapate kitu kile kile kilichohifadhiwa kwenye cache.
  5. Edge fetch na resize – Ikiwa picha haijahifadhiwa kwenye cache, Worker huvuta picha asilia kutoka kwa mwenyeji wa tatu, huendesha Image Resizing API, na kuhifadhi matokeo kwenye edge cache.
  6. Cache warming – Baada ya kila utafutaji (crawl), skripti nyepesi ya Python huomba picha ndogo mpya mapema. Kwa hivyo, mtumiaji wa kwanza halisi hupokea jibu lililohifadhiwa kwenye cache badala ya kusubiri operesheni ya kubadilisha ukubwa.

Athari zinazopimika baada ya mwezi mmoja

  • CPU ya Origin kwa picha – Imeshuka hadi sifuri; backend haichakati tena byte za picha.
  • Kasi ya kutoa HTML – Imeboreka kwa kiasi kikubwa kwa sababu seva haizuiwi tena na kazi za picha.
  • Kiwango cha edge cache hit – Kimefikia 96 %, ikimaanisha karibu kila ombi lilitimizwa kutoka kwenye edge bila kuvuta kutoka kwenye backend.
  • Latency – Imepungua kwani picha sasa zinatolewa kutoka kwenye kituo cha data kilicho karibu na mtumiaji badala ya seva asilia kuu.
  • Utabiri wa bandwidth – Kwa kutumia edge caching, trafiki inayotoka kwenye origin ni thabiti na rahisi kutabiri.

Hitimisho

Kuhamisha utengenezaji wa picha ndogo kwenda Cloudflare Workers kuliugeuza kizuizi cha CPU kuwa edge cache yenye gharama karibu na sifuri. Origin sasa hutoa tu URL zilizotiwa saini, wakati edge inashughulikia kuvuta, kubadilisha ukubwa, kutoa muundo, na kutoa matokeo yaliyohifadhiwa kwenye cache. Kwa tovuti yoyote inayotegemea sana picha—hasa majukwaa ya video yanayoonyesha picha ndogo nyingi kwa ukurasa—njia ya "edge-first" inatoa kurasa za haraka zaidi, gharama zinazotabirika, na utenganisho mzuri kati ya "nini cha kuonyesha" (origin) na "jinsi ya kukifikisha" (edge).