Mengganti Domain Gambar Cloudinary ke Subdomain Sendiri dengan Cloudflare Workers.
Jika kamu menggunakan Cloudinary sebagai media storage gambar dan ingin menampilkannya melalui subdomain sendiri seperti https://2025.cakrawalaasia.id, ada satu hal teknis penting yang perlu dipahami: perbedaan path versi file.
🔍 Perbedaan Path Versi di Cloudinary
Misalnya:
- URL dari Cloudinary langsung:
/image/upload/v1754558847/jvazqjpbwmefotm1zp51.webp- URL lewat subdomain sendiri (Cloudflare Worker):
/image/upload/v1754553593/jvazqjpbwmefotm1zp51.webpWalaupun nama file (jvazqjpbwmefotm1zp51.webp) sama, versi timestamp (v1754553593vsv1754558847) berbeda.
📌 Kenapa Ini Terjadi?
Cloudinary secara otomatis membuat versi baru (vXXXXXXX) setiap kali file diupload, bahkan jika nama file tidak berubah. Ini merupakan mekanisme manajemen cache dan versi dari Cloudinary.
Versi ini tidak bisa ditentukan secara manual saat upload, dan karenanya perlu strategi untuk menyesuaikan dengan subdomain custom milikmu.
🎯 Solusi: Bangun Ulang URL Berdasarkan Nama File
Daripada langsung menggunakan secure_url dari API Cloudinary, lebih baik kita hanya mengambil nama file dan membangun ulang URL-nya secara manual.
🔧 Sebelumnya:
$img->setAttribute('src', $upload_result['url']);
🚀 Menjadi:
if ($upload_result['success']) {
$original_url = $upload_result['url'];
$filename = basename($original_url); // contoh: jvazqjpbwmefotm1zp51.webp
// Gunakan versi yang sudah diketahui tersedia di Cloudinary
$custom_url = "https://2025.cakrawalaasia.id/image/upload/v1754553593/$filename";
$img->setAttribute('src', $custom_url);
}
🧠 Penjelasan
* basename() → mengekstrak nama file dari URL Cloudinary.* v1754553593 adalah versi tetap (bisa dari hasil upload pertama).v... dari URL asli dan hanya mengganti domain-nya.⚠️ Catatan Penting
- Pastikan versiv... yang kamu gunakan benar-benar tersedia di Cloudinary, atau gambar akan 404.- Jika ingin lebih fleksibel:
$path_after_domain = str_replace("https://res.cloudinary.com/dtqlbsocv", "", $original_url);
$custom_url = "https://2025.cakrawalaasia.id" . $path_after_domain;✅ Contoh Final Aman
if ($upload_result['success']) {
$cloudinary_url = $upload_result['url'];
$path = str_replace("https://res.cloudinary.com/dtqlbsocv", "", $cloudinary_url);
$custom_url = "https://2025.cakrawalaasia.id" . $path;
$img->setAttribute('src', $custom_url);
}
Dengan pendekatan ini, kamu tetap memanfaatkan performa dan stabilitas Cloudinary, sambil menampilkan gambar lewat domain sendiri. Ini sangat berguna untuk branding, kontrol SEO, serta performa caching yang lebih baik jika digabung dengan Cloudflare.
