ඔබේ React SPA එක Cloudflare හෝ CloudFront මත static bundle එකක් ලෙස සංග්රහ කරලා සේවය කරද්දී, /go/* වැනි API මාර්ගයන් 200 OK HTML පිටුවක් ලෙස බ්රවුසරයට ආපසු එන ගැටලුවක් පෙනී යයි.
මෙම ගැටලුවේ මූලික හේතුව නම්, SPA එකක් සඳහා Cloudflare හි පෙරනිමි සැකසීමක් වන "fallback to index.html" වේ. ඉල්ලීමක් static ෆයිලයක් නොවන විට, Cloudflare ස්වයංක්රීයව index.html ලබා දී React Router වෙත පාරදෙයි. එමෙන්ම /go/* මාර්ගය client‑side route එකක් නොව, server‑side affiliate tracking endpoint එකක් වන බැවින්, React Router එය හඳුනාගත නොහැකි වීමෙන් redirect එක සිදු නොවෙයි.
ඒ නිසා affiliate click එකක් ලොග් නොවී, 302 redirect නොලැබෙයි; පරිශීලකයා SPA පිටුවේම පෙනී, අදාළ පාර්ට්නර් වෙබ් අඩවියට යාමට නොහැකි වේ. ව්යාපාරික අරමුණ අහිමිවීමත්, වෙබ් සංවර්ධකයින්ට debug කිරීමේ කාලය ඉතිරි නොවීමත් ගැටලුවක් බවට පත් වුණා.
ඉදිරි විසඳුම වශයෙන් Cloudflare Worker එකක් භාවිතා කර, edge පළලේම routing තීරණයක් ගත යුතුය. Worker එක /go/ පථය ඇතුළත් ඉල්ලීම් පරීක්ෂා කර, ඒවා jo4‑api.jo4.io වෙත proxy කරයි. redirect response එක manual ලෙස සකස් කර, බ්රවුසරයට 302 සෘජු ලෙස ලබා දේ. අනෙක් සියලු ඉල්ලීම් සාමාන්ය SPA bundle එකට යොමු කරයි.
උදාහරණයක් ලෙස:
- Worker එක URL එක parse කර /go/ පථය හඳුනාගනී.
- එය backend API වෙත forward කරයි, method, headers, query strings සම්පූර්ණයෙන් ගනී.
- API එකෙන් 302 redirect ලැබෙයි; Worker එක ඒක 그대로 බ්රවුසරයට යවයි.
- අනෙකුත් සියලු URL ගත කර SPA bundle එකේ index.html ලබා දේ.
ශ්රී ලංකාවට ඇති වැදගත්කම
ශ්රී ලංකාවේ බොහෝ startups සහ වෙබ් සංවර්ධකයින් Cloudflare වැනි edge platform භාවිතා කරති. මෙම විසඳුම ඔවුන්ට:
- affiliate tracking, campaign redirect වැනි server‑side endpoint ගණනාවක් SPA සමඟ සමඟම ක්රියාත්මක කිරීමේ හැකියාව ලබා දේ.
- edge routing භාවිතයෙන් latency අඩු කර, පරිශීලකයාට වේගවත් redirect ලබා දේ.
- React Router හා Cloudflare Worker එකට එකට ගැලපෙන architecture එකක් නිර්මාණය කර, future‑proof web apps නිර්මාණය කළ හැක.
අවසන් වශයෙන්, මෙම ක්රමය අධික traffic යටතේද API මාර්ගයන් නිවැරදිව ක්රියාත්මක කර, ශ්රී ලංකාවේ ඩිජිටල් ව්යාපාරවල ආදායම සහ පාරිභෝගික අත්දැකීම් වැඩි දියුණු කරයි.
ඔබේ SPA එකේ edge routing එකක් එක් කර, affiliate click tracking සාර්ථක කර ගන්න. තවත් තාක්ෂණික ගැටළු ඇත්නම් Cloudflare Worker documentation එකේ උදාහරණ බලන්න.