R2
S3 uyumlu object storage — çıkış (egress) trafiği ücretsiz.
- DurumGenel kullanımda
- FiyatDepolama + Class A/B işlem sayısı; egress ücretsiz
- Ücretsiz katmanvar
- Doğrulama
R2 nedir?
R2, S3 API’siyle uyumlu bir object storage servisidir. Resmî tanım:
“Cloudflare R2 is an S3-compatible object storage service with no egress fees, built on Cloudflare’s global network. It is strongly consistent and designed for high data durability.”
Çözdüğü problem tek cümleyle: “store large amounts of unstructured data without the costly egress bandwidth fees associated with typical cloud storage services.”
Dayanıklılık %99,999999999 (on bir dokuz), erişilebilirlik SLA’sı %99,9.
Nasıl çalışır?
Mimari
Dört bileşen: R2 Gateway (Workers üzerinde çalışan kimlik doğrulama ve yönlendirme katmanı), Metadata Service (Durable Objects üzerine kurulu dağıtık metadata katmanı), Tiered Read Cache ve dağıtık depolama altyapısı.
Yazma yolunun sonu önemli: “Only after this commit is an HTTP 200 success response sent to the client, preventing unacknowledged writes.”
Tutarlılık — R2’nin en güçlü yanı
Şunların hepsi güçlü tutarlı: yazma sonrası okuma, metadata güncellemeleri, silme, ve nesne listeleme. Yalnızca IAM eventual consistent (“may take up to a minute”).
S3 uyumluluğu — ne var, ne yok
Endpoint: https://<HESAP_ID>.r2.cloudflarestorage.com. Bölge her zaman auto; uyumluluk için
boş değer ve us-east-1 de kabul edilir.
Uygulanmış nesne işlemleri: HeadObject, ListObjects, GetObject, PutObject, DeleteObject, DeleteObjects, CopyObject, ve tüm multipart işlemleri.
Uygulanmamış — dürüst boşluklar:
| Eksik | Sonucu |
|---|---|
| Versioning | Üzerine yazma geri alınamaz |
| Bucket policy / ACL | Yalnızca 4 izin seviyesi var, policy dili yok |
| Object tagging | Etiket bazlı lifecycle ve maliyet dağıtımı yapılamaz |
| Replication | Bölgeler arası kopyalama yok |
| S3 Inventory, Intelligent-Tiering | Yok |
R2’ye özel eklentiler: PutObject’te cf-create-bucket-if-missing: true başlığı,
CopyObject’te x-amz-metadata-directive: MERGE, ve 1.000’den fazla bucket’ı olan hesaplar için
genişletilmiş ListBuckets.
Multipart upload
| Kısıt | Değer |
|---|---|
| En küçük parça (son hariç) | 5 MiB |
| En büyük parça | 5 GiB |
| En fazla parça | 10.000 |
| Yarım kalan yükleme | 7 gün sonra otomatik iptal |
Genel erişim — iki ayrı mekanizma
| Custom domain | r2.dev | |
|---|---|---|
| Üretim | ✅ önerilen | ❌ “intended for non-production traffic” |
| WAF, Cache, Access, Bot Management | ✅ | ❌ |
| Hız sınırı | normal | yüzlerce istek/sn → 429 |
Yaşam döngüsü (lifecycle)
Bucket başına en fazla 1.000 kural, önek bazlı. Nesneler x-amz-expiration değerinden
sonra genellikle 24 saat içinde silinir.
Maliyet açısından kritik iki nokta:
- “When an object is transitioned from Standard storage to Infrequent Access storage, a Class A operation is incurred.” — her geçiş faturalanır.
- “Once an object is stored in Infrequent Access, it cannot be transitioned to Standard Access using lifecycle policies.” — geri dönüş yok.
Yargı bölgeleri ve konum ipuçları
| Ne yapar | Garanti mi | |
|---|---|---|
Location Hint (wnam, enam, weur, eeur, apac, oc) | Bucket’ı bir bölgeye yaklaştırmaya çalışır | Hayır, en iyi çaba |
Jurisdiction (eu, us, fedramp) | Veriyi o yargı alanında tutar | Evet |
Location Hint bir kez uygulanır: “Location Hints are only honored the first time a bucket with a given name is created.” Aynı adla silip yeniden oluşturursan eski konum korunur.
Türkiye için tanımlı bir yargı bölgesi yoktur. En yakını AB.
Ne zaman kullanılır, ne zaman kullanılmaz
Uygun olduğu işler
- Medya ve dosya dağıtımı — egress ücretsizliği burada en çok işe yarar
- Yedekleme ve arşiv
- Kullanıcı yüklemeleri
- Statik varlık barındırma
- Veri gölü depolama katmanı (Iceberg tabloları için)
Uygun olmadığı işler
- Versiyonlama gerekiyorsa. Uygulanmamış; yanlış yazma geri alınamaz.
- Object tagging ile maliyet dağıtımı yapıyorsan. Yalnızca önek bazlı kurallar var.
- İnce taneli IAM politikası gerekiyorsa. Policy dili yok, 4 izin seviyesi var.
- Bölgeler arası replikasyon gerekiyorsa. Yok.
- Derin arşiv katmanı arıyorsan. Yalnızca Standard ve Infrequent Access var; Glacier benzeri bir katman yok. IA’nın 0,01 USD/GB-ay fiyatı gerçek bir derin arşiv katmanının yaklaşık 3 katıdır.
- Tek bir sıcak nesneye yüksek eşzamanlı yazma yapıyorsan. Aynı anahtara saniyede 1 yazma sınırı var, aşınca 429.
- Verinin Türkiye’de kalması gerekiyorsa.
tryargı bölgesi yok.
S3 karşılaştırması
Bu, Türk kullanıcıların R2’ye bakma sebebinin neredeyse tamamı. Dürüst cevap şu:
Örnek hesap — medya dağıtımı
10 TB depolama, ayda 100 TB egress, 5 milyon yazma, 200 milyon okuma:
| Kalem | Hesap | Tutar |
|---|---|---|
| Depolama | (10.000 − 10 ücretsiz) GB-ay × 0,015 USD | 149,85 USD |
| Class A | (5M − 1M ücretsiz) = 4M × 4,50 USD/M | 18,00 USD |
| Class B | (200M − 10M ücretsiz) = 190M × 0,36 USD/M | 68,40 USD |
| Egress (100 TB) | ücretsiz | 0,00 USD |
| R2 toplam | 236,25 USD |
Aynı iş yükünü S3’te hesaplarken belirleyici satır veri çıkışıdır ve 100 TB’ta bu kalem tek başına yukarıdaki toplamın kat kat üstüne çıkar. AWS fiyatlarını bu portalda yayımlamıyoruz; kendi hesabını AWS’nin resmî fiyat sayfasından doğrula.
“Egress ücretsiz”in dört kaydı
- Egress ücretsiz ama istek değil. Her okuma bir Class B işlemi. Çok sayıda küçük dosya sunan bir iş yükü bant genişliğinden değil, işlem sayısından faturalanır.
- Worker üzerinden servis edersen Workers ücreti eklenir. Resmî ifade: “Since Cloudflare Workers runs before the Cloudflare cache, the caching of a request still incurs costs.”
r2.devücretsiz ama üretime uygun değil. Hız sınırlı.- Infrequent Access’te egress ücretsiz ama retrieval değil. 0,01 USD/GB, artı 30 günlük minimum.
Somut örnekler
1. Worker ile kimlik doğrulamalı yükleme ve indirme
{
"r2_buckets": [{ "binding": "KOVA", "bucket_name": "medya-varliklari" }]
}
export default {
async fetch(request, env) {
const url = new URL(request.url);
const anahtar = url.pathname.slice(1);
switch (request.method) {
case "PUT":
await env.KOVA.put(anahtar, request.body, {
httpMetadata: { contentType: request.headers.get("content-type") },
storageClass: "Standard",
});
return new Response(`${anahtar} yüklendi`);
case "GET": {
const nesne = await env.KOVA.get(anahtar);
if (nesne === null) return new Response("Bulunamadı", { status: 404 });
const headers = new Headers();
nesne.writeHttpMetadata(headers);
headers.set("etag", nesne.httpEtag);
return new Response(nesne.body, { headers });
}
default:
return new Response("İzin verilmeyen metot", {
status: 405, headers: { Allow: "PUT, GET" },
});
}
},
};
2. Presigned URL ile doğrudan tarayıcıdan yükleme
Dosya senin sunucundan geçmez — bant genişliği ve CPU tasarrufu.
import { S3Client, PutObjectCommand } from "@aws-sdk/client-s3";
import { getSignedUrl } from "@aws-sdk/s3-request-presigner";
const S3 = new S3Client({
region: "auto", // SDK istiyor, R2 kullanmıyor
endpoint: `https://${HESAP_ID}.r2.cloudflarestorage.com`,
credentials: { accessKeyId: ANAHTAR_ID, secretAccessKey: GIZLI_ANAHTAR },
});
const yuklemeUrl = await getSignedUrl(
S3,
new PutObjectCommand({
Bucket: "medya-varliklari",
Key: `yuklemeler/${crypto.randomUUID()}.png`,
ContentType: "image/png", // yalnızca bu türe izin verir
}),
{ expiresIn: 3600 }, // 1 saniye – 7 gün arası
);
3. Yedekleme — otomatik katman geçişi
import boto3
s3 = boto3.client(
service_name="s3",
endpoint_url=f"https://{HESAP_ID}.r2.cloudflarestorage.com",
aws_access_key_id=ANAHTAR_ID,
aws_secret_access_key=GIZLI_ANAHTAR,
region_name="auto",
)
s3.upload_file("yedek.dump", "yedekler", "db/2026-09-01.dump")import { S3Client, PutObjectCommand } from "@aws-sdk/client-s3";
import { readFile } from "node:fs/promises";
const s3 = new S3Client({
region: "auto",
endpoint: `https://${HESAP_ID}.r2.cloudflarestorage.com`,
credentials: { accessKeyId: ANAHTAR_ID, secretAccessKey: GIZLI_ANAHTAR },
});
await s3.send(new PutObjectCommand({
Bucket: "yedekler",
Key: "db/2026-09-01.dump",
Body: await readFile("yedek.dump"),
}));npx wrangler r2 object put yedekler/db/2026-09-01.dump --file ./yedek.dumpYaşam döngüsü kuralları:
# 30 gün sonra ucuz katmana geç
npx wrangler r2 bucket lifecycle add yedekler eskiyi-tasi "db/" --ia-transition-days 30
# 1 yıl sonra sil
npx wrangler r2 bucket lifecycle add yedekler eskiyi-sil "db/" --expire-days 365
# yarım kalan yüklemeleri temizle
npx wrangler r2 bucket lifecycle add yedekler mpu-temizle "" --abort-multipart-days 3
4. Olay tabanlı işlem hattı — yükleme → Queue → Worker
npx wrangler r2 bucket notification create medya-varliklari \
--event-types object-create --queue islem-kuyrugu --suffix ".mp4"
Kuyruğa düşen mesaj:
{
"account": "3f4b7e3d...",
"action": "PutObject",
"bucket": "medya-varliklari",
"object": { "key": "video/tanitim.mp4", "size": 65536, "eTag": "c846ff..." },
"eventTime": "2026-09-01T19:36:44.379Z"
}
Bucket başına en fazla 100 bildirim kuralı; önek ve sonek filtresi var, regex yok.
5. Uyum arşivi — WORM
npx wrangler r2 bucket lock add uyum-loglari
npx wrangler r2 bucket lock list uyum-loglari
Resmî tanım: “Bucket locks prevent the deletion and overwriting of objects in an R2 bucket for a specified period — or indefinitely.”
Demo 1: Bucket kurup custom domain ile yayınlama
Adım 1 — Bucket oluştur
npx wrangler r2 bucket create demo-kova --location weur
npx wrangler r2 bucket info demo-kova
Adım 2 — Nesne yükle
npx wrangler r2 object put demo-kova/merhaba.txt --file ./merhaba.txt
npx wrangler r2 object get demo-kova/merhaba.txt
Adım 3 — Custom domain bağla
npx wrangler r2 bucket domain add demo-kova \
--domain varlik.alanadin.com --zone-id <ZONE_ID> --min-tls 1.2
npx wrangler r2 bucket domain list demo-kova
Adım 4 — dev URL’i kapat
npx wrangler r2 bucket dev-url disable demo-kova
Adım 5 — WAF kuralının çalıştığını doğrula
Adım 6 — Presigned URL ile tarayıcıdan yükleme
Demo 2: Şirket içi MinIO’dan R2’ye geçiş
Bu demoyu senin on-prem MinIO kurulumunla yapacağız — S3 uyumluluğunun gerçekte ne kadar sorunsuz olduğunu ölçmek için.
Adım 1 — Kaynak MinIO’yu hazırla
Adım 2 — Super Slurper ile toplu taşıma
Adım 3 — Aynı kodu iki hedefe karşı çalıştır
Uygulama kodunda yalnızca endpoint değiştirilir.
Adım 4 — Uyumsuzlukları bul
Versioning, tagging ve multipart parça boyutu testlerini çalıştır.
Adım 5 — Gecikme ve maliyet karşılaştırması
Ölçüm
| Ölçüt | MinIO (on-prem) | R2 |
|---|---|---|
| Taşınan nesne sayısı | — | — |
| Taşıma süresi | — | — |
| Yurt içinden indirme gecikmesi | — | — |
| Yurt dışından indirme gecikmesi | — | — |
| Çalışmayan S3 işlemi sayısı | — | — |
| Aylık tahmini maliyet | — | — |
Fiyatlandırma
Rakamlar 1 Eylül 2026’da üç bağımsız resmî sayfadan doğrulanmıştır.
| Standard | Infrequent Access | |
|---|---|---|
| Depolama | 0,015 USD / GB-ay | 0,01 USD / GB-ay |
| Class A işlem (yazma) | 4,50 USD / milyon | 9,00 USD / milyon |
| Class B işlem (okuma) | 0,36 USD / milyon | 0,90 USD / milyon |
| Veri çekme (retrieval) | yok | 0,01 USD / GB |
| Egress | Ücretsiz | Ücretsiz |
| Minimum saklama süresi | yok | 30 gün |
Ücretsiz katman: ayda 10 GB-ay depolama, 1 milyon Class A, 10 milyon Class B. Yalnızca Standard için geçerlidir.
Ücretsiz işlemler: DeleteObject, DeleteBucket, AbortMultipartUpload. Ayrıca yetkisiz
istekler (HTTP 401) faturalanmaz.
Infrequent Access tuzağı
Cloudflare’in kendi iki örneği:
| Senaryo | Katman | Toplam |
|---|---|---|
| 1.000 nesne × 1 GB, 1 ay saklandı, her biri 1.000 kez okundu | Standard | 14,85 USD |
| Aynı iş yükü, yalnızca 5 gün saklandı | Infrequent Access | 29,90 USD |
IA yalnızca gerçekten seyrek okunan ve uzun süre duran veri için ucuzdur.
Lisanslama ve hukuki çerçeve
R2 tescilli bir hizmettir; Cloudflare Hizmet Şartları kapsamındadır. Yüklediğin verinin mülkiyeti sende kalır.
Şifreleme. Dinlenme hâlinde AES-256 GCM, Cloudflare yönetimli anahtarlarla, otomatik ve kapatılamaz. Kendi anahtarını kullanmak istersen SSE-C desteklenir — ama resmî uyarı sert: “In the event you misplace them, Cloudflare will be unable to recover the body of any objects encrypted using those keys.”
Veri yerleşimi ve KVKK. Yargı bölgesi kısıtı gerçek bir garantidir: eu seçildiğinde
endpoint değişir ve o yargı alanı dışından erişilemez. Türkiye için tanımlı bölge yoktur.
Verinin Türkiye’de kalması gereken bir yükümlülüğün varsa R2 tek başına bunu karşılamaz.
Limitler
| Özellik | Sınır |
|---|---|
| Bucket başına depolama | Sınırsız |
| Bucket başına nesne | Sınırsız |
| Hesap başına bucket | 1.000.000 |
| Nesne boyutu | 5 TiB (pratikte 4,995 TiB) |
| Tek parça yükleme | 5 GiB |
| Multipart parça sayısı | 10.000 |
| Nesne anahtarı uzunluğu | 1.024 bayt |
| Nesne metadata boyutu | 8.192 bayt |
| Bucket başına custom domain | 100 |
| Bucket başına lifecycle kuralı | 1.000 |
| Bucket başına bildirim kuralı | 100 |
| Aynı anahtara eşzamanlı yazma | saniyede 1 |
| Bucket yönetim işlemi | saniyede 50 |
| Presigned URL geçerlilik | 1 saniye – 7 gün |
| REST API hız sınırı | 5 dakikada 1.200 istek (hesap geneli) |
Bucket adı kuralları: 3–63 karakter, yalnızca küçük harf, rakam ve tire; tireyle başlayamaz veya bitemez.
Sık yapılan hatalar
Custom domain ekleyip r2.dev’i açık bırakmak. WAF, Access ve Bot Management sessizce
atlatılabilir hâle gelir.
r2.dev’e CNAME çekmek. Resmî olarak desteklenmeyen erişim yolu.
Object seviyesi token’ı REST API’ye karşı kullanmak. Object token’ları yalnızca S3 API içindir; REST API 401 veya 403 döner.
REST API ile toplu nesne işlemi yapmak. 5 dakikada 1.200 istek sınırı var; S3 API veya Workers API kullan.
Değişken boyutlu multipart parçalar. S3’te çalışır, R2’de çalışmaz.
Location Hint’i garanti sanmak. En iyi çabadır ve bucket adının ilk oluşturulmasına sabitlenir.
Infrequent Access’i her zaman ucuz sanmak. 30 günlük minimum ve retrieval ücreti kısa ömürlü veride onu pahalı yapar.
list() sonucunu limit ile karşılaştırmak. Resmî uyarı: “applications must be careful to
avoid comparing the amount of returned objects against your limit. Instead, use the truncated
property.”
CORS sorununu CORS sanmak. Önce cf-mitigated başlığına (WAF engellemiş) ve cf-cache-status
eksikliğine (Hotlink Protection engellemiş) bak.
Lifecycle geçişinin Class A ücreti doğurduğunu unutmak. Her Standard → IA geçişi faturalanır.
Sıkça sorulan sorular
- R2 kullanmak için Workers Paid planı şart mı?
- Büyük ihtimalle hayır — R2'nin kendi aboneliği var: “You need a Cloudflare account with an R2 subscription… Complete the checkout flow to add an R2 subscription.” Ayrıca Workers fiyat sayfası Paid planın kapsadığı ürünleri sayarken R2'yi listelemiyor: “The Workers Paid plan includes Workers, Pages Functions, Workers KV, Hyperdrive, and Durable Objects usage.” Yani R2 bağımsız faturalanıyor gibi görünüyor. Ama Cloudflare bunu olumsuz bir cümleyle hiçbir yerde yazmıyor, dolayısıyla kesin ifade kullanmıyoruz. Faturalandırma kararı vermeden önce hesap ekibinizle teyit edin.
- “Egress ücretsiz” gerçekten sınırsız mı?
- Bant genişliği evet, ama her okuma bir Class B işlemidir (milyon başına 0,36 USD). Resmî dipnot da bir kayıt düşüyor: “If you connect other metered services to an R2 bucket, you may be charged by those services.” Yani Worker üzerinden servis ediyorsan Workers istekleri ayrıca faturalanır. Cloudflare'in kendi örneği bunu net gösteriyor: 100.000 dosya × 100 KB, günde 10 milyon okuma → ayda 104,40 USD, ve bunun tamamı Class B işlem ücreti; depolama ve egress 0,00 USD.
- S3 kodum değişmeden çalışır mı?
- Büyük ölçüde. Endpoint'i
https://<HESAP_ID>.r2.cloudflarestorage.comyapıpregion: "auto"vermen yeterli. Ama şunlar uygulanmamış: versioning, bucket policy, ACL, replication, object tagging, S3 Inventory, Intelligent-Tiering. Ayrıca multipart'ta R2 ek bir kısıt koyar: “All parts except the last must be the same size” — S3'te böyle bir şart yok. - Versiyonlama var mı? Yanlışlıkla üzerine yazarsam?
- Yok.
PutBucketVersioninguygulanmamış ve aynı anahtara iki yazmada son yazan kazanır. Bu, S3'ten geçenlerin en çok şaşırdığı eksiklik. Korunma yolları: Bucket Locks (silme ve üzerine yazmayı belirli süre engeller), bucket kapsamlı token'lar, ve yazma yolunu Worker üzerinden geçirip kendi sürümlemeni yapmak. - Infrequent Access her zaman daha mı ucuz?
- Hayır — sık okunan veride daha pahalı. Cloudflare'in kendi iki örneği bunu kanıtlıyor: aynı iş yükü Standard'da 14,85 USD, Infrequent Access'te sadece 5 gün tutulduğunda 29,90 USD. Sebep üçlü: 30 günlük minimum saklama süresi, 0,01 USD/GB retrieval ücreti, ve 25 kat pahalı Class A işlemi (milyon başına 9,00 USD). Ayrıca ücretsiz katman IA'ya uygulanmaz.
- Verimi Türkiye'de tutabilir miyim?
- Hayır. R2'nin yargı bölgeleri yalnızca
eu,usvefedramp. Türkiye için tanımlı bir bölge yok. En yakını AB: endpointhttps://<HESAP_ID>.eu.r2.cloudflarestorage.comolur ve “you will not be able to access R2 resources outside of that jurisdiction.” Location Hint (weur,eeur) ise garanti değil, yalnızca en iyi çaba. - r2.dev adresini üretimde kullanabilir miyim?
- Hayır. Resmî ifade: “This endpoint is intended for non-production traffic.” Yüzlerce istek/saniyede 429 döner ve throughput da kısıtlanır. Ayrıca
r2.dev'e CNAME çekmek “an unsupported access path” olarak işaretli. Üretimde custom domain kullan. - Custom domain ekledim, WAF kuralım neden atlanıyor?
- Çünkü
r2.devhâlâ açık. Custom domain eklemek dev URL'i kapatmaz — ikisini ayrı ayrı yönetirsin. Bucket hâlâr2.devüzerinden erişilebilir olduğu sürece WAF, Access ve Bot Management devre dışı bırakılabilir. Çözüm:npx wrangler r2 bucket dev-url disable <BUCKET> - Sildiğim dosya hâlâ görünüyor.
- R2'nin kendi silme işlemi güçlü tutarlıdır — listeleme dahil. Ama önüne cache koyduğun anda bu gevşer: “An object you delete from R2, but that is still cached, will still be available.” Cache purge gerekir. Ters yönü de var: Cloudflare 404'leri de cache'ler, yani daha önce 404 dönen bir yola dosya yüklersen bir süre 404 görmeye devam edebilirsin.
- HTTP 5XX alıyorum, limitim mi doldu?
- Muhtemelen eşzamanlılık. Resmî ifade: “your bucket has been overwhelmed by too many concurrent requests. These errors can trigger bucket-wide read and write locks.” Cloudflare'in önerdiği çözüm retry + bucket sharding — yani mimariyi buna göre kurmak. Ayrıca aynı anahtara saniyede birden fazla yazma denersen 429 alırsın.
- S3'ten R2'ye nasıl geçerim?
- İki resmî araç var. Super Slurper — tek seferlik toplu taşıma; Amazon S3, Google Cloud Storage ve S3 uyumlu sağlayıcıları destekler. Ücretsizdir, yalnızca R2'ye yaptığı Class A işlemleri faturalanır. Sippy — kademeli, tembel taşıma; nesneler istendikçe R2'ye kopyalanır ve böylece “avoids upfront egress fees.” Kaynak taraftaki egress faturasını dert ediyorsan Sippy'yi seç.
- Ücretsiz katman ne kadar?
- Ayda 10 GB-ay depolama, 1 milyon Class A ve 10 milyon Class B işlem. Önemli uyarı: “The free tier only applies to Standard storage, and does not apply to Infrequent Access storage.” Ayrıca faturalama yukarı yuvarlanır — 1,1 GB-ay kullandıysan 2 GB-ay ödersin.
İlgili servisler
- WorkersJavaScript/TypeScript/Python kodunu Cloudflare’in 330+ şehirdeki sunucularında, sunucu yönetmeden çalıştırır.
- Cache ReserveStatik içeriği R2 üzerinde kalıcı olarak cache’ler; origin’e giden isteği azaltır.
- Queuesİşleri kuyruğa alıp arka planda batch ve garantili biçimde işler.
- Data PlatformŞemsiye terim: Pipelines + R2 Data Catalog + R2 SQL. Event verisini toplar, Iceberg’de saklar, SQL ile sorgulatır.
- ImagesGörselleri saklar, resize eder, WebP/AVIF’e çevirir ve CDN’den sunar.
- StreamVideoyu yükler, kodlar ve adaptive bitrate ile oynatır; canlı yayın dahil.
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.