Images
Görsel depolama, dönüştürme ve teslim. Faturalama iki ayrı moda bölünüyor ve “unique transformation” sayacı cache'ten bağımsız çalışıyor — insanların şaşırdığı yer tam olarak burası.
- DurumGenel kullanımda
- FiyatBenzersiz dönüşüm başına; depolama ve teslim ayrı metrikler
- Ücretsiz katmanvar
- Doğrulama
Images nedir?
Cloudflare Images bugün tek bir ürün ama iki kullanım modu var, ve fatura bu ikisi arasında bölünüyor:
“Optimize remote images — Keep your images on your own origin, in R2, or with any storage provider. Cloudflare pulls the original image, applies optimizations at the edge, and caches the optimized image.” “Upload and deliver with Images — Store, optimize, and deliver images globally with zero infrastructure management.”
| Kullanım | Faturalanan metrik | Hangi planda |
|---|---|---|
| Images dışında saklanan görselleri optimize etmek | Images Transformed | Ücretsiz ve ücretli |
| Images’ta saklanan görselleri optimize etmek | Images Stored + Images Delivered | Yalnızca ücretli |
Nasıl çalışır?
URL biçimleri
Kendi origin’inden veya R2’den:
https://<ZONE>/cdn-cgi/image/<SECENEKLER>/<KAYNAK-GORSEL>
Images deposundan:
https://imagedelivery.net/<HESAP_HASH>/<GORSEL_ID>/<VARIANT>
Kendi alan adından (alan adının proxied, yani turuncu bulut olması şart):
https://ornek.com/cdn-cgi/imagedelivery/<HESAP_HASH>/<GORSEL_ID>/<VARIANT>
Workers’da iki ayrı yol var: fetch alt isteğinde cf.image nesnesi
(“available on any zone that hosts a Worker, including *.workers.dev subdomains”), ve ham
baytlarla çalışan Images binding’i (“Unlike the URL interface, which requires images to be
accessible through a URL, the binding works with raw image bytes”).
Cache ve fatura ilişkisi
“On a cache hit — Cloudflare serves the optimized image directly from the edge without contacting the origin or re-applying the optimization parameters.” “On a cache miss — Cloudflare fetches the original image from the source origin, applies the requested parameters… caches the transformed result…” “Each unique combination of source image and parameters is cached and billed separately. The first request for each unique version within a calendar month is billed as one unique transformation, regardless of cache status.”
Fit seçenekleri
| Seçenek | Sonuç | En/boy oranı korunur | Büyütür |
|---|---|---|---|
scale-down (varsayılan) | Görseli kırpmadan ve büyütmeden tamamen gösterir | Evet | Hayır |
contain | Kırpmadan tamamen gösterir | Evet | Evet |
cover | İstenen alanı doldurur, gerekirse kırpar | Hayır | Evet |
crop | Alanı doldurur ama asla büyütmez | Hayır | Hayır |
aspect-crop | Hedef orana kırpar, asla büyütmez | Hayır | Hayır |
pad | Alana sığdırır, kalanı boşlukla doldurur | Evet | Evet |
squeeze | Tam ölçüye ölçekler, gerekirse bozar | Hayır | Evet |
scale-up | Yalnızca büyütür, asla küçültmez | Evet | Evet |
Format seçimi
auto— tarayıcının desteklediği en verimli formatı sunuyor. Hosted görsellerde varsayılan.avif— “AVIF encoding can be an order of magnitude slower… If the image is too large to be quickly encoded to AVIF, then Cloudflare will fall back to WebP or JPEG.”webp—quality=100ile kayıpsız WebP.jpeg— progressive;baseline-jpegeski cihazlar için.json— görsel hakkında bilgi döner, görselin kendisini değil.
İki otomatik geri düşüş kuralı: çıktı 50×50’den küçük veya 3000×3000’den büyük ise progressive JPEG istenmiş olsa bile baseline JPEG dönüyor.
Dikkat çeken parametreler
dpr— üst sınır 2. Daha yükseği yok.quality— varsayılan 85. Sayısal (1–100) veya algısal (high,medium-high,medium-low,low).sharpen— 0–10, “The recommended value for downscaled images is1.”gravity=auto— “saliency algorithm to detect the most visually interesting pixels”.faceile yüz odaklı kırpma,zoomyalnızcagravity=faceile çalışıyor.segment=foreground— arka planı şeffaflaştırıyor; “uses an open-source model called BiRefNet through Workers AI.”upscale=generate— ESRGAN ile AI büyütme. “the AI model runs a single pass at the nearest supported scale (2x or 4x)” ve “has higher latency thanupscale=interpolatedue to GPU inference.”border— yalnızca Workers’da.blur— güvenlik için kullanma: “This parameter should not be used to reliably obscure image content when optimizing via URL, as the URL can be modified to remove the blur parameter.”metadata— varsayılancopyright.keepseçersen GPS konumu dahil EXIF korunuyor. WebP ve PNG çıktılarında metadata her hâlükârda siliniyor.
Ne zaman kullanılır, ne zaman kullanılmaz
Uygun olduğu işler
- Kullanıcı yüklemeli ürün ve profil görsellerini tek bir hattan geçirmek
- Responsive görsel üretmek — ama breakpoint sayısını bilinçli seçerek
- Origin’i görsel işleme yükünden tamamen kurtarmak
- İstemciye API token’ı vermeden yükleme yaptırmak (Direct Creator Upload)
- R2’de saklayıp yalnızca dönüşüm için Images kullanmak — Cloudflare’in “typically the most cost-effective” dediği desen
Uygun olmadığı işler
- SVG boyutlandırma. Yapılmıyor, parametreler yok sayılıyor.
- Kimlik doğrulamalı origin’den çekmek. İstek anonimleştiriliyor: çerez yok, auth yok, özel başlık yok.
- Tek bir dönüştürülmüş görseli purge etmek. Yalnızca orijinali purge edebiliyorsun, o da hepsini siliyor.
- Görselin fiziksel olarak nerede saklandığını bölgeye sabitlemek. “Jurisdictional Restrictions (storage) options are not supported today.”
- BYOIP ile birlikte. Uzak görsel dönüşümlerinde uyumsuz.
- Polish ile birlikte. İkisi aynı işi yapıyor; Cloudflare açıkça birlikte kullanmamayı söylüyor.
- Video. Animasyonlu GIF/WebP için Cloudflare’in kendi tavsiyesi: “we recommend using video formats like MP4 and WebM for best performance.”
Somut örnekler
1. Uzak görseli dönüştürmek
https://ornek.com/cdn-cgi/image/width=800,quality=80,format=auto/urunler/kirmizi-canta.jpg
Üç parametre = tek bir benzersiz dönüşüm. Aynı görseli 400 piksel isteyince ikinci bir dönüşüm oluyor.
2. Responsive — ama kaç dönüşüm ödediğini bilerek
https://ornek.com/cdn-cgi/image/width=auto,wbreakpoints=480;960,format=auto/kapak.jpg
Varsayılan breakpoint’ler 320;768;960;1200 — dört tane. Yukarıdaki gibi ikiye indirirsen
görsel başına maliyet yarıya iniyor.
3. Workers’da binding ile
// wrangler.jsonc
{ "images": { "binding": "IMAGES" } }
export default {
async fetch(request, env) {
const kaynak = await fetch("https://ornek.com/ham/foto.jpg");
const sonuc = await env.IMAGES
.input(kaynak.body)
.transform({ width: 1200, fit: "cover" })
.draw((await fetch("https://ornek.com/logo.png")).body, {
bottom: 20, right: 20, opacity: 0.7,
})
.output({ format: "image/avif", quality: 80 });
return sonuc.response();
},
};
4. Kaynak origin’i doğru tanımlamak
Varsayılan yalnızca kendi zone’un. Başka bir alan adı ekliyorsan alt alan adları otomatik gelmiyor:
b.com → media.b.com REDDEDILIR
*.b.com → media.b.com kabul edilir
5. Signed URL ile private görsel
Panel: Hosted Images → Keys. İmzalama HMAC-SHA-256 ile, exp parametresi ekleniyor ve
imza sig olarak yazılıyor. Cloudflare’in kendi uyarısı:
“Never hardcode your signing key in source code. Store it as a secret using
npx wrangler secret put.”
Demo 1: Format farkını gerçekten ölçmek ve AVIF limitini patlatmak
Bu demo iki şeyi kanıtlıyor: format seçiminin bayt cinsinden karşılığı, ve AVIF’in belgelenmiş 1.200 piksel kenar limitine çarpınca ne olduğu.
Ön koşullar: Ubuntu sunucu, Cloudflare’de aktif bir zone, panelde Images → Transformations açık.
Adım 1 — Test görselini hazırla
sudo apt update && sudo apt install -y imagemagick curl jq webp
mkdir -p ~/img-lab && cd ~/img-lab
# Genis bir test gorseli uret — AVIF limitini asacak kadar
magick -size 3000x2000 gradient:navy-orange -pointsize 200 \
-fill white -gravity center -annotate 0 "TEST" ham.jpg
identify ham.jpg
ls -lh ham.jpg
Dosyayı zone’unda erişilebilir bir yere koy (/var/www/html/img-lab/ham.jpg).
Adım 2 — Aynı görseli üç formatta iste ve baytları karşılaştır
ZONE=ornek.com
YOL=/img-lab/ham.jpg
for F in jpeg webp avif; do
curl -s -o /dev/null -w "$F: %{size_download} bayt %{time_total}s tip=%{content_type}\n" \
"https://$ZONE/cdn-cgi/image/width=1000,quality=80,format=$F$YOL"
done
# Tarayicinin gordugu hali: format=auto
curl -s -o /dev/null -w "auto (Accept: avif): %{size_download} bayt tip=%{content_type}\n" \
-H "Accept: image/avif,image/webp,*/*" \
"https://$ZONE/cdn-cgi/image/width=1000,quality=80,format=auto$YOL"
Adım 3 — Dönüşümün gerçekten uygulandığını doğrula
curl -sI "https://$ZONE/cdn-cgi/image/width=1000,format=webp$YOL" \
| grep -iE 'cf-resized|cf-cache-status|content-type|content-length'
cf-resized başlığı yoksa dönüşüm hiç denenmemiş demektir — bu, sorun gidermede ilk bakılacak
yer.
Adım 4 — AVIF’in 1.200 piksel limitini gerçekten aş
Belgelenen limit: uzak görsellerde kenar en fazla 12.000 piksel, ama AVIF için 1.200.
# 1200 piksel — sinirda, AVIF donmeli
curl -s -o /dev/null -w "1200px: tip=%{content_type} boyut=%{size_download}\n" \
"https://$ZONE/cdn-cgi/image/width=1200,format=avif$YOL"
# 1600 piksel — limit asildi
curl -s -o /dev/null -w "1600px: tip=%{content_type} boyut=%{size_download}\n" \
"https://$ZONE/cdn-cgi/image/width=1600,format=avif$YOL"
İkinci istekte content-type AVIF olmayan bir değere düşüyor. Cloudflare bunu belgeliyor:
“If the image is too large to be quickly encoded to AVIF, then Cloudflare will fall back to
WebP or JPEG.”
Adım 5 — Fatura sayacını gör
Panel: Images → Overview. Bu demoda kaç benzersiz dönüşüm ürettiğini say: her farklı
width + format + quality kombinasyonu bir tane.
Demo 2: Proxy’lenmemiş hostname’de dönüşüm çalışmıyor
Bu, kurulum sırasında en sık takılınan yer ve hata mesajı yardımcı olmuyor. Demonun amacı önce arızayı üretmek, sonra düzeltmek.
Adım 1 — Gri bulutlu bir alt alan adı hazırla
Panelde img-test.ornek.com için bir A kaydı oluştur ve proxy durumunu DNS only (gri bulut)
yap. Aynı görseli oradan da servis et.
dig +short A img-test.ornek.com
curl -sI https://img-test.ornek.com/img-lab/ham.jpg | grep -iE '^HTTP|server|cf-ray'
dig sunucunun gerçek IP’sini döndürüyor ve yanıtta cf-ray başlığı yok — istek Cloudflare’e
hiç uğramıyor.
Adım 2 — Dönüşümü dene
curl -s -o /dev/null -w "gri bulut: %{http_code} tip=%{content_type}\n" \
"https://img-test.ornek.com/cdn-cgi/image/width=400,format=webp/img-lab/ham.jpg"
curl -s "https://img-test.ornek.com/cdn-cgi/image/width=400,format=webp/img-lab/ham.jpg" | head -c 300
Dönüşüm çalışmıyor — çünkü /cdn-cgi/ yolunu işleyen Cloudflare kenarı devrede değil. Sunucu
ya 404 veriyor ya da yolu bilmediği için hata döndürüyor.
Adım 3 — Turuncu buluta al ve tekrar dene
Panelden aynı kaydın proxy durumunu Proxied yap, sonra:
sleep 15
curl -sI "https://img-test.ornek.com/cdn-cgi/image/width=400,format=webp/img-lab/ham.jpg" \
| grep -iE '^HTTP|cf-ray|cf-resized|content-type'
Artık cf-ray ve cf-resized başlıkları var, içerik tipi image/webp.
Adım 4 — İkinci bir tuzağı da göster: kaynak origin kısıtı
# Baska bir alan adindaki gorseli kaynak olarak kullanmayi dene
curl -s -o /dev/null -w "dis kaynak: %{http_code}\n" \
"https://ornek.com/cdn-cgi/image/width=400/https://baska-site.com/foto.jpg"
Varsayılan olarak reddediliyor: “By default, Cloudflare accepts only source images from the zone where your transformations are served.” Panelden Images → Transformations → Sources altına ekleyince çalışıyor.
Ölçüm tablosu
| Ölçüt | Değer |
|---|---|
| JPEG çıktı boyutu (1000px, q=80) | |
| WebP çıktı boyutu | |
| AVIF çıktı boyutu | |
| AVIF’in JPEG’e göre kazancı | |
| 1200px AVIF isteğinin content-type’ı | |
| 1600px AVIF isteğinin content-type’ı | |
| Gri bulutta dönüşüm sonucu | |
| Turuncu bulutta dönüşüm sonucu | |
| Demoda üretilen benzersiz dönüşüm sayısı |
Fiyatlandırma
Rakamlar 1 Eylül 2026’da Images pricing
sayfasından alındı ve workers.cloudflare.com/pricing ile ürün sayfasında birebir aynı
çıktı — üç resmî kaynak birbirini doğruluyor.
Ücretsiz
“On the Free plan, you can request up to 5,000 unique transformations each month for free.”
Aşarsan: mevcut cache’tekiler sunulmaya devam ediyor, yenileri 9422 hatası dönüyor, ve
fatura çıkmıyor. Aynı zone’daki bir kaynaksa onerror=redirect ile orijinale
yönlendirebilirsin.
Ücretli
| Metrik | Fiyat |
|---|---|
| Images Transformed | İlk 5.000 benzersiz dönüşüm dahil, sonrası 0,50 USD / 1.000 dönüşüm / ay |
| Images Stored | 5 USD / 100.000 görsel / ay |
| Images Delivered | 1 USD / 100.000 teslim / ay |
“Every image requested by the browser counts as one billable request.” Cloudflare’in kendi örneği: 10 görsellik bir ürün sayfası, ayda 10.000 ziyaret = 100.000 teslim = 1,00 USD.
Cloudflare’in yayımladığı örnek hesaplar
Uzak görseller: 2.000 görsel × 5 boyut = 10.000 benzersiz dönüşüm → 5.000 dahil, 5.000 faturalanır → 2,50 USD.
R2 + Images: 5.000 görsel × 5 MB = 25 GB depolama (10 GB dahil, 15 GB × 0,015 USD = 0,22 USD) + 10.000 dönüşüm (2,50 USD) = toplam 2,72 USD. Class A yazma ve Class B okuma ücretsiz kotanın içinde kalıyor.
Lisanslama ve hukuki çerçeve
Images tescilli bir hizmettir ve Cloudflare Hizmet Şartlarına tabidir.
Veri yerelleştirme — Türkiye. Cloudflare Türkiye’yi yönetilen bir Regional Services bölgesi olarak destekliyor:
“Turkey — Cloudflare will only use data centers that are physically located within Turkey to decrypt and service HTTPS traffic.”
Uyumluluk matrisinde Images için satır şöyle:
| Ürün | Geo Key Manager | Regional Services | Customer Metadata Boundary |
|---|---|---|---|
| Cloudflare Images | ⚫️ uygulanamaz | ✅ ¹ | 🚧 ² |
¹ “Only when using a Custom Domain set to a region.” ² “Logs / Analytics not supported for CMB = EU. Jurisdictional Restrictions (storage) options are not supported today. All other features are available to all CMB regions.”
Images dokümantasyonunda veri yerleşimi hiç geçmiyor. residency, localization,
jurisdiction, Turkey ve GDPR kelimelerinin tamamı sıfır eşleşme veriyor (pozitif
kontrollü doğrulandı). Bu bilgi yalnızca Data Localization dokümanlarında var — Images’ı
kullanacak bir ekibin oraya bakması gerektiğini bilmesi gerekiyor.
Metadata ve kişisel veri. metadata=keep seçersen EXIF’in çoğu korunuyor — GPS konumu
dahil. Kullanıcı yüklemeli görsellerde varsayılan copyright değerini değiştirmeden önce iki
kez düşün. Not: WebP ve PNG çıktılarında metadata her hâlükârda siliniyor.
Sık yapılan hatalar
Polish ile birlikte açmak
“Do not activate Polish and image transformations simultaneously. Image transformations already apply lossy compression, which makes Polish redundant.”
Zaten çalışmıyor da: “Polish skips image URLs processed by Cloudflare Images.”
width=auto bırakıp faturaya şaşırmak
Dört breakpoint = dört dönüşüm. wbreakpoints ile daralt.
Gri bulutlu kayıtta dönüşüm beklemek
/cdn-cgi/image/ yolunu Cloudflare kenarı işliyor. Kayıt proxy’lenmemişse istek oraya hiç
uğramıyor.
Alan adı ekleyip alt alan adlarını unutmak
b.com eklemek media.b.com’u kapsamıyor; *.b.com yazman gerekiyor.
Worker’ı /* kapsamında çalıştırmak
“Resizing is ‘forgotten’ as soon as one Worker calls another. Do not use Workers scoped to the entire domain
/*.”
Dönüştürülmüş görseli purge etmeye çalışmak
/cdn-cgi/ ile başlayan URL’ler purge edilemiyor. Orijinali purge et — tüm varyantları birlikte
gidiyor.
Kimlik doğrulamalı origin’den görsel çekmeyi denemek
İstek anonimleştiriliyor: çerez, auth başlığı ve özel başlıklar gönderilmiyor.
Signed URL ile flexible variants’ı birleştirmeye çalışmak
Çalışmıyor. Aynı şekilde özel ID’li görseller private yapılamıyor ve private görseller custom path desteklemiyor.
Binding’de cache’i açmamak
Her çağrı tam bir çöz–yeniden kodla döngüsü çalıştırıyor. {"cache": {"enabled": true}} ekle.
blur ile içerik gizlemeye çalışmak
“This parameter should not be used to reliably obscure image content when optimizing via URL, as the URL can be modified to remove the blur parameter.”
Sıkça sorulan sorular
- Ücretsiz planda kullanabilir miyim?
- Evet, ama yalnızca dönüşümler için. Birebir: “By default, all users are on the Images Free plan. The Free plan includes access to the transformations feature… The Paid plan allows transformations, as well as access to storage in Images.” Ücretsiz kota ayda 5.000 benzersiz dönüşüm. Aşarsan: “Existing transformations in cache will continue to be served as expected. New transformations will return a
9422error… You will not be charged for exceeding the limits in the Free plan.” Yani sürpriz fatura gelmiyor, servis duruyor. - “Unique transformation” tam olarak ne demek? Cache tutarsa ödemez miyim?
- Cache'in faturaya etkisi yok. Birebir: “The first request for each unique version within a calendar month is billed as one unique transformation, regardless of cache status.” Sayaç takvim ayı bazlı: “Repeat requests for the same transformation within the same month are counted only once for that month.” Ay değişince sayaç sıfırlanıyor ve aynı dönüşümün ilk isteği yeniden faturalanıyor. Bu model 15 Kasım 2023'teki birleşmeyle geldi ve Cloudflare gerekçesini kendisi yazmış: “caching behavior is often unpredictable… bills for Image Resizing are unpredictable month over month.”
- format=auto kullanırsam AVIF, WebP ve JPEG için üç kez mi ödüyorum?
- Hayır. Birebir: “The
formatparameter counts as only one billable transformation, even if multiple copies of an image are served. In other words, ifwidth=100,format=auto/thumbnail.jpgis served to some users as AVIF and to others as WebP, then this counts as one unique transformation instead of two.” Ama her farklıwidth,qualityveyafitkombinasyonu ayrı bir dönüşüm. - srcset ile responsive görsel yaparsam maliyetim ne olur?
- Her genişlik ayrı faturalanıyor.
width=autoiçin birebir: “When optimizing remote images withwidth=auto, each unique width counts as a separate billable transformation.” Varsayılan breakpoint'ler320;768;960;1200— yani görsel başına potansiyel olarak dört dönüşüm. Alt parametrelerle daraltabilirsin:wbreakpoints,wmobile(varsayılan 768),wdesktop(varsayılan 1200). - Görselleri Images'ta mı saklamalıyım yoksa R2'de mi?
- Cloudflare'in kendi cevabı net. R2 + transformations: “if you want to build your own custom image pipeline or need fine-grained control over storage, such as bucket-level access management or object lifecycle rules. This is typically the most cost-effective approach for image optimization.” Images'ta saklama: “a fully managed solution with the least configuration. Our built-in features include a shared delivery domain, predefined variants, and automatic cache invalidation when you update original images in storage.” Fatura farkı da önemli: R2'de saklarsan yalnızca Images Transformed ödersin; Images'ta saklarsan Images Stored ve Images Delivered ödersin.
- Aynı görsel için hangi metrik işliyor?
- Nereden sunulduğuna bağlı ve bu kolayca karıştırılıyor. Birebir: “When you optimize a hosted image through the image delivery URL, then this counts toward Images Delivered — not Images Transformed. However, if you optimize a hosted image through the Images binding, then this counts toward Images Transformed.” Aynı görsel, iki farklı yol, iki farklı metrik.
- Maksimum görsel boyutu nedir?
- İki ayrı tablo var. Uzak görseller (kendi origin'in veya R2): dosya 100 MB, alan 100 MP, kenar 12.000 px — ama AVIF için kenar yalnızca 1.200 px. Images deposundakiler: dosya 10 MB, aynı alan ve kenar limitleri, metadata 1.024 bayt. Workers binding'i için
.input()üst sınırı 20 MB. Girdi formatları: PNG, JPEG, GIF (animasyonlu dahil), WebP (animasyonlu dahil), SVG, HEIC ve yalnızca Enterprise'da AVIF. - SVG dosyalarım yeniden boyutlandırılmıyor.
- Beklenen. Birebir: “Cloudflare does not resize SVG files and will ignore any optimization parameters.” Ama sunulurken temizleniyor:
svg-hushile script'ler, hyperlink'ler ve cross-origin referanslar çıkarılıyor. - Polish ile Transformations'ı birlikte kullanabilir miyim?
- Kullanma. Birebir uyarı: “Do not activate Polish and image transformations simultaneously. Image transformations already apply lossy compression, which makes Polish redundant.” Zaten çalışmıyor da: “Polish will not be applied to URLs using image transformations” ve “Polish skips image URLs processed by Cloudflare Images.” Not: Polish ücretsiz planda yok (Pro, Business, Enterprise).
- Dönüştürülmüş tek bir görseli önbellekten temizleyebilir miyim?
- Hayır. Birebir: “Cloudflare does not support purging optimized images individually. URLs starting with
/cdn-cgi/cannot be purged. However, purging of the original image's URL will also purge all of its optimized versions.” Yani tek yol orijinali purge etmek — o da tüm varyantlarını birden siliyor. Ayrıca dönüştürülmüş görsellerde “the minimum cache time is one hour”. - Origin'im kimlik doğrulama istiyor, görselleri çekemiyor.
- Çekemez, çünkü istek anonimleştiriliyor. Birebir: “Image requests to the origin will be anonymized (no cookies, no auth, no custom headers). This is because we have to have one public cache for resized images, and it would be unsafe to share images that are personalized for individual visitors.” Kimlik doğrulamalı origin için Workers üzerinden bir çözüm belgelenmiş.
- Kaynak görselim başka bir alan adında, hata alıyorum.
- Varsayılan olarak yalnızca kendi zone'un kabul ediliyor. Birebir: “By default, Cloudflare accepts only source images from the zone where your transformations are served.” Ek origin tanımlaman gerekiyor — ve alt alan adları otomatik dahil değil: “if you add
b.com, then source images frommedia.b.comwill be rejected”, bunun için*.b.comyazman lazım. Bir güvenlik açığına dikkat: “only the initial URL of the source image is checked. Any redirects, including URLs that leave your zone, will be followed, and the resulting image will be transformed.” Ve “any origin” seçeneği için Cloudflare'in kendi uyarısı: “less secure and may allow third parties to serve transformations on your zone.” - Signed URL ile flexible variants birlikte çalışır mı?
- Hayır. Birebir: “Flexible variants cannot be used for images that require a signed delivery URL.” İki kısıt daha: özel ID ile yüklenen görseller
requireSignedURLs=trueile private yapılamıyor, ve “Private images do not currently support custom paths.” - Kaç variant tanımlayabilirim, depolamamı etkiler mi?
- 100 variant — “you can create up to 100 variants”. Depolamayı etkilemiyor: “Only uploaded images count toward Images Stored; defining variants will not impact your storage limit.” İki not:
publicvariant'ı silinemiyor, ve variant silmek küresel bir işlem — “Deleting a variant is a global action that will affect other images that contain that variant.” - Direct Creator Upload linki ne kadar geçerli?
- Birebir: “By default, the
uploadURLexpires after 30 minutes if unused.”expiryile değiştirilebiliyor: “minimum of two minutes and maximum of six hours in the future.” Bu yöntemin amacı API token'ını istemciye vermemek: “lets your users upload images with a one-time upload URL without exposing your API key or token to the client… eliminates the need for an intermediary storage bucket and the storage/egress costs associated with it.” - BYOIP kullanıyorum, çalışır mı?
- Hayır. Birebir: “Bring Your Own IP (BYOIP) is not compatible with Images when optimizing remote images (transformations).”
- Worker'ım görselleri dönüştürmüyor.
- İlk kontrol: yanıtta
Cf-Resizedbaşlığı var mı? Yoksa “resizing has not been attempted”. Üç yaygın sebep: özellik panelde açılmamış; aynı istekte başka bir Worker çalışıyor — “Resizing is 'forgotten' as soon as one Worker calls another. Do not use Workers scoped to the entire domain/*”; veya panel editöründe test ediyorsun — “You must deploy the Worker and test from another browser tab instead.” - Binding kullanıyorum, her istek yavaş.
- Çünkü binding yanıtları otomatik önbelleğe alınmıyor. Birebir: “Responses from the Images binding are not automatically cached. Every uncached call performs a full decode and re-encode of the source image, which adds unnecessary latency to every request.” Çözüm:
{"cache": {"enabled": true}}. Ayrıca 1 Temmuz 2026'dan beri binding de benzersiz dönüşüm bazlı faturalanıyor ve.info()çağrıları artık ücretsiz. - API istek limiti nedir?
- Ürün geneli için yayımlanmış bir istek/saniye limiti yok — doküman genel Cloudflare API limitlerine yönlendiriyor. Yayımlanan tek rakam Batch API için: “Each token is subject to a rate limit of 200 requests per second. You can use multiple tokens if you require higher throughput.”
- Türkiye'de veri yerelleştirme yapabilir miyim?
- Kısmen ve şartlı. Cloudflare Türkiye'yi Regional Services bölgesi olarak destekliyor: “Cloudflare will only use data centers that are physically located within Turkey to decrypt and service HTTPS traffic.” Uyumluluk matrisinde Images ✅ — ama dipnotu okuman şart: “Only when using a Custom Domain set to a region.” İkinci dipnot da önemli: “Logs / Analytics not supported for CMB = EU. Jurisdictional Restrictions (storage) options are not supported today.” Yani görsellerin nerede saklandığını bölgeye sabitleyemiyorsun; sabitlenebilen şey trafiğin nerede işlendiği. Ayrıca Customer Metadata Boundary yalnızca
usveeudestekliyor, Türkiye yok. Not: Images dokümantasyonunun tamamındaresidency,localization,jurisdiction,TurkeyveGDPRkelimeleri hiç geçmiyor — bu bilgi yalnızca Data Localization dokümanlarında.
İlgili servisler
- StreamVideoyu yükler, kodlar ve adaptive bitrate ile oynatır; canlı yayın dahil.
- R2S3 uyumlu object storage — çıkış (egress) trafiği ücretsiz.
- CDNStatik içeriği kullanıcıya en yakın şehirde cache’leyip origin yükünü düşürür.
- Cache ReserveStatik içeriği R2 üzerinde kalıcı olarak cache’ler; origin’e giden isteği azaltır.
- WorkersJavaScript/TypeScript/Python kodunu Cloudflare’in 330+ şehirdeki sunucularında, sunucu yönetmeden çalıştırır.
- RealtimeKitGörüntülü/sesli görüşme ve canlı yayın için hazır gerçek zamanlı iletişim altyapısı.
Bu sayfadaki fiyat ve özellik bilgileri 1 Eylül 2026 tarihinde Cloudflare’in resmî kaynaklarından doğrulanmıştır. Cloudflare fiyatlandırmasını önceden haber vermeden değiştirebilir; bağlayıcı bilgi içinresmî sayfaya bakın.