BETPIXEL

8 Ağustos 2026 · 5 dk okuma

Bir milyon pixel tek görsel olarak nasıl sunuluyor

Tuvalde binlerce ayrı reklam var ama sayfada tek bir görsel var. Birleştirme, yeniden üretim, önbellek ve fareyle üstüne gelince ne olduğu.

Tuval 10 × 10'luk bloklara bölünmüş durumda: 100 × 100 blok, yani 10.000 blok. En küçük kiralama bir blok olduğuna göre, tuval teorik olarak aynı anda 10.000 farklı reklam taşıyabilir. Buna rağmen ana sayfayı açtığında tarayıcının indirdiği görsel sayısı birdir.

Bu bir optimizasyon süsü değil, tuvalin çalışabilmesinin şartı. Nedenini ve nasıl yapıldığını anlatalım.

Neden binlerce ayrı görsel olmuyor

Akla gelen ilk çözüm şu: her reklam bir görsel etiketi olsun, doğru koordinata konumlansın, bitsin. Küçük ölçekte çalışır. Tuval dolmaya başladığında çalışmaz.

Üç ayrı yerden çöker:

  • İstek sayısı. Her görsel ayrı bir ağ isteği demek. Birkaç yüz reklam, birkaç yüz istek. Bağlantı ne kadar hızlı olursa olsun, her isteğin kendi gecikmesi var ve tarayıcının aynı anda açabileceği bağlantı sayısı sınırlı. Sayfa parça parça, gözle görülür biçimde dolar.
  • Yerleşim maliyeti. Binlerce konumlandırılmış eleman, tarayıcının her yeniden hesaplamada üzerinden geçmesi gereken binlerce eleman demek. Yakınlaştırma ve kaydırma akıcılığını ilk kaybeden yer burası, özellikle telefonda.
  • Tutarsızlık. Reklamlar ayrı ayrı yüklenirse, bir tanesi yüklenemediğinde tuvalde boşluk kalır. Tuval "bir resim" olma iddiasındaysa, yarısı gelmiş bir resim işe yaramaz.

Doğru çözüm, işi tarayıcıdan alıp sunucuya vermek: birleştirmeyi biz yapıyoruz, tarayıcıya tek bir hazır görüntü gidiyor.

Asıl veri tuval değil, veritabanı

Burada kafa karıştıran nokta genelde şu: tuval bir dosya değil. Doğrusunu söylemek gerekirse tuval, veritabanındaki satırların toplamı.

Sistemin gerçeği bilen tarafı şu bilgilerden oluşuyor: hangi kiralama hangi blokları tutuyor, o kiralamanın onaylanmış görseli hangisi, kiralama şu anda yayında mı, ne zaman bitiyor. Ekranda gördüğün PNG bunlardan üretilmiş bir çıktı. Kaynak değil, sonuç.

Bu ayrım önemli, çünkü sonraki her şey buradan çıkıyor.

Neden yamamak yerine baştan üretiyoruz

Yeni bir reklam onaylandığında akla yatkın görünen şey, mevcut görüntünün üstüne o görseli o koordinata çizip kaydetmek. Ekleme için gerçekten çalışır. Sorun kaldırmada.

Bir reklamın süresi dolduğunda o alana ne çizeceksin? Altında ne olduğunu bilmiyorsun, çünkü görüntüde katman yok — üst üste çizilmiş tek bir düzlem var. "Zemini geri çiz" demek, zeminin ne olduğuna dair ayrı bir varsayım tutmak demek. Ve bu varsayım bir kere kaysa, tuvalde artık hiçbir kayıtla eşleşmeyen bir leke kalır. Aylar sonra kimse o lekenin neden orada olduğunu bulamaz.

Bu yüzden tuval her değişimde veritabanından sıfırdan kuruluyor. Boş zeminle başlanıyor, o an yayında olan bütün kiralamalar tek tek kendi koordinatlarına çiziliyor, sonuç tek bir PNG olarak yazılıyor.

Maliyeti var: değişen tek bir blok olsa bile bütün görüntü yeniden üretiliyor. Karşılığı şu: görüntü her zaman veritabanının o anki halinin birebir karşılığıdır. Aynı veriden bin kez üretsen bin kez aynı dosyayı elde edersin. Bozulma birikemez, çünkü hiçbir şey bir öncekinin üstüne eklenmiyor.

Yamamak hızlıdır ama hata biriktirir. Baştan üretmek pahalıdır ama hatayı unutur.

Sürüm numarası: hem sonsuz önbellek hem anında kaldırma

Tek görsel iyi de, bir sorun var: o görsel sık sık değişiyor. Tarayıcıya "bunu önbelleğe al" dersen, kaldırdığın bir reklam ziyaretçilerin ekranında günlerce durmaya devam eder. "Önbelleğe alma" dersen, herkes her ziyarette bir milyon pixeli yeniden indirir.

Çözüm, iki isteği birbirinden ayırmak. Görüntünün bir sürüm numarası var ve bu numara adresin içinde geçiyor. Tuval her yeniden üretildiğinde numara artıyor, yani yeni içerik her zaman yeni bir adreste yayınlanıyor.

Bunun sonucu şu:

  • Her adres, içeriği hiç değişmeyen bir adres olduğu için uzun süreli önbelleklenebilir. Aynı sürümü ikinci kez indiren kimse olmuyor.
  • Bir reklamı kaldırman gerektiğinde önbellek temizlemeyi beklemiyorsun. Yeni tuval üretiliyor, sayfa yeni adresi gösteriyor, eski adres artık kimse tarafından istenmiyor. Kaldırma anında etkili oluyor.

Aynı mantığın tıklama tarafındaki karşılığı /out yönlendirmesi: link doğrudan reklam verenin adresine gitmiyor, bizim üzerimizden geçiyor. Bir link sonradan zararlı hale gelirse tek kayıtla kapatılabiliyor.

Tek görsel varken fare nereye geldiğini nasıl biliyor

Sayfada tek bir görsel varsa, imleci bir reklamın üstüne getirdiğinde adını ve linkini nereden buluyor?

Görüntüden değil, ayrı ve çok küçük bir haritadan. Tarayıcıya tuvalle birlikte bir liste gidiyor: hangi dikdörtgen hangi kiralamaya ait, başlığı ne, linki hangi kimlikte. İmleç hareket ettiğinde yapılan iş basit bir bölme işlemi — imlecin tuval üzerindeki koordinatı 10'a bölünüp aşağı yuvarlanınca blok koordinatı çıkıyor, o blok listede aranıyor.

Bu neden ucuz: arama bir milyon pixel arasında değil, 10.000 blok arasında yapılıyor ve blok sayısı sabit. Tuval dolsa da boş kalsa da ızgara hep aynı büyüklükte. Yani ipucu kutusunun hızı, tuvalde kaç reklam olduğuna bağlı değil.

Görsel ile harita ayrı olduğu için de güzel bir yan fayda çıkıyor: görüntü sadece görüntü olarak kalıyor, tıklanabilirlik ve etiketler ayrı katmanda duruyor. İkisini birbirinden bağımsız değiştirebiliyoruz.

Bu senin için ne anlama geliyor

Pratik sonuçları şunlar:

  • Görselin tam ölçüde saklanıyor. 6 × 4 blok kiraladıysan alanın 60 × 40 pixel, yani 2.400 pixel — haftada 2.400 dolar. Yüklediğin dosya sunucuda yeniden kodlanıp tam bu ölçüye getiriliyor. Oran tutmuyorsa kenarlardan kırpılıyor, bunu sana yükleme sırasında söylüyoruz.
  • Animasyon çalışmıyor. Tuval tek bir birleşik durağan görüntü olduğu için hareketli GIF'in yalnızca ilk karesi alınıyor. Reklamını ilk kareye göre tasarla.
  • Değişiklik anında yayılıyor. Yeni görselin onaylandığı anda tuval yeniden üretiliyor ve yeni sürüm yayına giriyor. Onay beklerken eski görselin yayında kalması da aynı mekanizmanın sonucu: yayında olan, veritabanında onaylı olandır.

Küçük bir hesap için: 2 × 2 blok, yani 20 × 20 pixel = 400 pixel = haftada 400 dolar. Üç hafta kiralarsan 1.200 dolar. Bu alan, tuvalin 10.000 blokluk ızgarasında 4 blok tutuyor — ipucu haritasındaki dört satır, birleşik görüntüdeki 400 pixel.

Toparlarsak: tuval tek bir görsel, çünkü başka türlü ölçeklenmez. O tek görsel her seferinde veritabanından baştan üretiliyor, çünkü yamamak zamanla gerçekle bağını koparır. Sürüm numarası sayesinde hem sonsuza kadar önbelleklenebiliyor hem de bir saniyede değiştirilebiliyor. Ve üstüne gelince ne olduğunu bilmesinin sebebi görüntü değil, onun yanında duran küçük bir ızgara haritası.

Sistemin baştan sona nasıl işlediğini görmek istersen nasıl çalışır sayfasına bak.