Her gigabayt için para ödediğinizde, trafik soyut bir kavram olmaktan çıkıp gerçek paraya dönüşür. Ağır görselleri ve videoları çeken dikkatsiz bir script, bir gecede aylık bütçenizi tüketebilir. İyi haber şu ki, tüketimi yönetmek mümkün ve mekanizmayı bir kez anladığınızda bu hiç de zor değil.

Bu rehber size göreve başlamadan önce trafiği hesaplamayı, gerçek tüketimi ölçmeyi ve basit yöntemlerle kat kat azaltmayı öğretecek. Proxy türünden bağımsız olarak, hacim başına ödeme yapılan her tarifeye uygulanabilecek trafik ekonomisinden bahsediyoruz.

Giriş: Trafiği Neden Önceden Hesaplamalısınız?

Gigabayt başına ödemede her isteğin bir maliyeti vardır. Sorun şu ki bu maliyet, fatura gelene veya bakiye sıfırlanana kadar görünmez. Çoğu yeni başlayan tüketimi sonradan hesaplar; oysa tam tersini yapmak gerekir: başlamadan önce bütçeyi tahmin edin ve bir yedek pay bırakın.

Sonunda Ne Kazanacaksınız?

Bu rehberi okuduktan sonra herhangi bir web sayfasını bileşenlerinin ağırlığına göre analiz edebilecek, Python veya Node ile basit bir trafik sayacı yazabilecek, tüketimi yüzde 70-95 oranında azaltan tasarruf yöntemlerini uygulayabilecek ve proje bütçesini doğru bir şekilde hesaplayabileceksiniz. Ayrıca hacim başına ödemenin ne zaman daha avantajlı olduğunu, ne zaman sınırsız tarife almanız gerektiğini de anlayacaksınız.

Bu Rehber Kimler İçin?

  • Proxy üzerinden veri kazıma (parsing) ve veri toplama işleriyle uğraşanlar için.
  • Toplu istekler gönderen otomasyon uzmanları için.
  • Harici kaynaklarla çalışan pazarlamacılar ve analistler için.
  • Aynı sonuç için daha az ödemek isteyen herkes için.

Önceden Bilmeniz Gerekenler

HTTP istekleri hakkında temel bir anlayış avantaj sağlar ancak şart değildir. Temel terimleri sade bir dille açıklayacağız. Pratik bölüm için Python veya Node.js'te script çalıştırma konusunda asgari düzeyde deneyim işinize yarar; ancak kodu, açıklamalarıyla birlikte hazır olarak veriyoruz.

Ne Kadar Zaman Gerekir?

Teoriyi okumak ve anlamak yaklaşık 30 dakika sürer. Trafik sayacını kurmak 15-20 dakikanızı alır. Tasarruf yöntemlerini projenize uyarlamak projenin karmaşıklığına bağlıdır, ancak temel şeyleri bir saat içinde uygulayabilirsiniz.

Ön Hazırlık: Araçlar ve Erişim Bilgileri

Trafiği hesaplamadan ve tasarruf etmeden önce araç setimizi hazırlayalım. Her şey ücretsizdir ve Windows, macOS ve Linux üzerinde çalışır.

Gerekli Araçlar

  • Python 3.10 veya daha yenisi - trafik hesaplama scriptleri için.
  • Node.js 18 veya daha yenisi - JavaScript ile arası iyi olanlar için alternatif.
  • Python için requests kütüphanesi - pip install requests komutuyla kurulur.
  • Playwright kütüphanesi - headless tarayıcı ile çalışmak için; pip install playwright ve playwright install ile kurulur.
  • Geliştirici araçlarına sahip bir tarayıcı - herhangi bir modern tarayıcı iş görür; sayfaları manuel analiz etmek için yerleşik Ağ (Network) paneli gerekir.
  • Proxy hizmetinizin kişisel hesabına erişim - gerçek trafik istatistiklerini orada görürüz.

Sistem Gereksinimleri

Son on yılda üretilmiş herhangi bir bilgisayar yeterlidir. 4 gigabayt RAM yeterli olur, ancak headless tarayıcı için 8 gigabayt daha rahattır. Playwright tarayıcı motorları için yaklaşık 2 gigabayt disk alanı gerekir.

Kurulum ve Yapılandırma Adımları

  1. Resmi siteden Python'u indirip kurun; kurulum sırasında PATH'e ekleme seçeneğini işaretleyin.
  2. Terminali açın ve python --version komutuyla kurulumu doğrulayın.
  3. pip install requests komutuyla requests kütüphanesini kurun.
  4. Tarayıcıyla çalışmayı planlıyorsanız, pip install playwright komutuyla Playwright'ı kurun, ardından playwright install chromium komutunu çalıştırın.
  5. Proxy bağlantı bilgilerinizin elinizin altında olduğundan emin olun: adres, port, kullanıcı adı ve şifre.

İpucu: Trafik denemeleri için ayrı bir klasör oluşturun. Böylece dosyalar arasında kaybolmazsınız ve bir şey ters giderse değişiklikleri kolayca geri alırsınız.

⚠️ Dikkat: Proxy kullanıcı adı ve şifresini asla bir yere gönderdiğiniz kodun içinde saklamayın. Ortam değişkenlerini veya başkalarının eline geçmeyecek ayrı bir yapılandırma dosyası kullanın.

✅ Kontrol: python --version ve pip --version komutları hatasız olarak sürüm numaralarını döndürüyorsa hazırlık başarıyla tamamlanmıştır.

Temel Kavramlar Basit Dille

Baytları saymadan önce terimleri netleştirelim. Jargonsuz, basit anlatımla.

Trafik Nedir?

Trafik, bağlantınız üzerinden geçen veri miktarıdır. Sunucuya gönderdiğiniz veriden ve sunucunun yanıt olarak gönderdiği veriden oluşur. Gigabayt başına ödemede her iki yön de sayılır, ancak gelen trafik (sunucu yanıtları) genellikle giden trafikten kat kat fazladır.

Bir İstek Nelerden Oluşur?

Bir sayfayı açtığınızda tarayıcı bir istek gönderir ve bir yanıt alır. Yanıt, başlıklardan (boyut, tür, kodlama hakkında meta bilgi) ve gövdeden (asıl içerik: HTML, görsel, script) oluşur. Gövde neredeyse her zaman başlıklardan çok daha ağırdır.

Anahtar Terimler

  • GET isteği - içeriği almak için yapılan standart istek. Hem başlıkları hem de gövdeyi döndürür.
  • HEAD isteği - yalnızca başlıkların istendiği, gövdesiz istek. Gövdeye ihtiyacınız olmadığında trafik tasarrufu sağlar.
  • Content-Length - yanıt gövdesinin bayt cinsinden boyutunu bildiren başlık.
  • Accept-Encoding - sunucudan yanıtı sıkıştırmasını istediğiniz başlık.
  • gzip ve brotli - metin verilerinin boyutunu birkaç kez azaltan sıkıştırma algoritmaları.
  • Yönlendirme (redirect) - bir adresten başka bir adrese aktarma. Her yönlendirme ekstra bir istek ve trafik demektir.
  • Headless tarayıcı - kodla yönetilen, grafik penceresi olmayan tarayıcı. Normal bir tarayıcının yüklediği her şeyi, ağır kaynaklar dahil, yükler.

Tasarrufun Temel İlkesi

Görev için gerekli olmayanı yüklememek. Kulağa bariz geliyor ama bu kuralın ihlali tam da parayı yiyen şeydir. Bir ürün kartından yalnızca metne ihtiyacınız varsa, ürün fotoğraflarına, video incelemelerine, reklam banlarına ve analitik izleyicilere ihtiyacınız yoktur.

Sayfa Ağırlığı Nelerden Oluşur: Gerçek Bir Analiz

Bu bölümün amacı, somut bir örnekle sayfa ağırlığının büyük kısmına genellikle ihtiyacınız olmadığını göstermek. Tipik bir e-ticaret sayfasını ele alalım.

Ağırlık Bileşenleri ve Payları

Ortalama modern bir sayfa 2 ila 5 megabayt arasında ağırlığa sahiptir. Ağırlık yaklaşık şu şekilde dağılır:

  • Görseller - ağırlığın yüzde 50-70'i. Ürün fotoğrafları, banner'lar, yüksek çözünürlüklü simgeler.
  • JavaScript scriptleri - yüzde 15-25. Arayüz mantığı, widget'lar, sohbetler, sayaçlar.
  • Yazı tipleri (fontlar) - yüzde 5-10. Özel yazı tipleri ayrı dosyalar olarak yüklenir.
  • Analitik ve izleyiciler - yüzde 5-15. Piksel etiketleri, istatistik sistemleri, reklam scriptleri.
  • Video ve medya - sıfırdan devasa boyutlara. Otomatik oynatılan videolar bütçeyi bitirir.
  • HTML belgesi - yalnızca yüzde 1-5. İhtiyacınız olan veriler çoğunlukla tam olarak buradadır.

Pratik Sonuç

HTML'den yalnızca metin verilerine ihtiyacınız varsa, sayfa ağırlığının yüzde 90-95'inden vazgeçebilirsiniz. Beş megabaytlık bir sayfa, 100-200 kilobaytlık faydalı HTML'e dönüşür. Bu abartı değil, tipik bir tablodur.

Sayfa Ağırlığını Elle Nasıl Analiz Edersiniz?

  1. Sayfayı tarayıcıda açın.
  2. Geliştirici araçlarını açmak için F12'ye basın.
  3. Ağ (Network) sekmesine geçin.
  4. Sayfayı F5 tuşuyla yenileyin.
  5. Panelin alt kısmında yüklenen verilerin toplam boyutunu ve istek sayısını görürsünüz.
  6. En ağır kaynakları görmek için istekleri Boyut (Size) sütununa göre sıralayın.
  7. Tür (Type) sütununa dikkat edin: img görseller, script scriptler, font yazı tipleridir.

İpucu: Ağ panelinde kaynak türlerine göre filtreler bulunur. Tüm görsellerin toplam ağırlığını görmek için Img düğmesine tıklayın. Genellikle bu rakam şok edicidir.

✅ Kontrol: HTML belgesinin, görsellerin ve scriptlerin toplamından onlarca kat daha hafif olduğunu görmelisiniz. Bu, ana tasarruf potansiyelinin medyadan vazgeçmek olduğunu doğrular.

Adım 1: Görevinizin Gerçek Tüketimini Ölçün

Bu adımın amacı: scriptinizin ne kadar trafik harcadığını doğru bir şekilde hesaplamayı öğrenmek, böylece tüketimi bilinçli yönetmek.

Python'da Trafik Hesaplama

requests kütüphanesi her yanıtın boyutunu öğrenmenizi sağlar. Gövde uzunluğunu ve başlıkların yaklaşık boyutunu toplayacağız.

  1. Çalışma klasörünüzde traffic_counter.py dosyasını oluşturun.
  2. İçine kütüphane importunu ekleyin: import requests.
  3. Proxy ayarlarını http ve https anahtarlarına sahip bir sözlük olarak tanımlayın.
  4. İstek döngüsünden önce total_bytes değişkenini sıfıra eşitleyin.
  5. Her istekten sonra response.content içeriğinin uzunluğunu buna ekleyin.
  6. Doğruluk için başlıkların boyutunu, metin temsillerinin uzunluğunu hesaplayarak ekleyin.
  7. Sonunda megabayt elde etmek için total_bytes değerini 1048576'ya bölün.

Mantık basittir: len(response.content) yanıt gövdesindeki bayt sayısını verir. Başlıklar, anahtarların ve değerlerin uzunluklarının toplamı olarak hesaplanır. Çoğu görevde yanıt gövdesi trafiğin ana kısmıdır, bu nedenle yalnızca content üzerinden yapılan basit hesaplama bile yaklaşık yüzde 95 doğruluk sağlar.

Önemli nokta: response.content, sunucu sıkıştırılmış yanıt gönderdiyse zaten açılmış verileri döndürür. Sıkıştırma sayesinde ağ üzerindeki gerçek trafik daha az olabilir. Tam olarak iletilen baytları ölçmek için yanıttaki Content-Length başlığına bakın; bu başlık gövdenin ağ üzerinden nasıl gittiğini gösterir.

İletilen Baytların Hassas Hesabı

  1. İstekten sonra response.headers.get('Content-Length') değerini kontrol edin.
  2. Değer varsa, bunu gövdenin bayt cinsinden gerçek ağırlığı olarak kullanın.
  3. Başlık yoksa (örneğin akışlı aktarımda), bunun açılmış boyut olduğunu hatırlayarak content uzunluğuna göre hareket edin.

Node.js'te Trafik Hesaplama

Node'da yerleşik https modülünü veya axios kütüphanesini kullanabilirsiniz. Prensip aynıdır: alınan verilerin boyutunu toplarız.

  1. traffic_counter.js dosyasını oluşturun.
  2. İstekler için kütüphaneyi ekleyin.
  3. totalBytes değişkenini sıfır değeriyle başlatın.
  4. Her yanıt için content-length başlığını alın veya veri tamponunun uzunluğunu sayın.
  5. Bu değeri totalBytes'e ekleyin.
  6. Sonunda megabayt elde etmek için totalBytes değerini 1048576'ya bölerek yazdırın.

İpucu: Yalnızca toplamı değil, her isteğin ağırlığını ayrı ayrı kaydedin. Böylece hangi URL'nin en çok trafik çektiğini hemen görür ve onu hedefli şekilde optimize edebilirsiniz.

Kişisel Hesap İstatistikleriyle Karşılaştırma

Kendi sayacınız ile proxy hizmetinin istatistikleri bir miktar farklılık gösterebilir. Bu normaldir. Farklılığın nedenleri:

  • Hizmet, bağlantı kurulumu ve güvenli kanal oluşturma dahil olmak üzere bağlantının tüm trafiğini sayar.
  • Sayaç yalnızca yanıtların faydalı yükünü hesaba katar.
  • İstek başlıkları, DNS alışverişi ve bağlantı yeniden kurulumları küçük bir ek yük (overhead) ekler.
  1. Scriptinizi 100 istek üzerinde çalıştırın ve sayacınızın sonucunu not edin.
  2. Çalıştırmadan önce ve sonra proxy hizmetinin kişisel hesabına girin.
  3. Hesap göstergelerindeki farkı kaydedin.
  4. Kendi sayacınızla karşılaştırın. Yüzde 10-20 arasındaki fark normaldir; bu, bağlantının ek yüküdür.

⚠️ Dikkat: Bağlantı ek yükünü her zaman bütçeye dahil edin. Gerçek tüketim, istemci tarafındaki faydalı yük hesabının neredeyse her zaman yüzde 10-20 üzerindedir.

✅ Kontrol: Sayacınız, ek yük düzeltmesiyle kişisel hesaptaki farka yakın bir değer gösteriyorsa, hesaplama doğru yapılandırılmıştır ve ölçümlerinize güvenebilirsiniz.

Adım 2: Trafiği Azaltmanın Temel Yöntemleri

Bu adımın amacı: karmaşık kod gerektirmeyen basit teknikleri uygulamak. En ulaşılabilir olanlardan başlayalım.

Yöntem 1: Accept-Encoding ile Sıkıştırmayı Açın

Metin verileri (HTML, JSON, scriptler) mükemmel şekilde sıkışır. Sunucudan sıkıştırılmış yanıt göndermesini isteyerek trafiği 3-5 kat azaltırsınız.

  1. İstek başlıklarına değeri gzip, br, deflate olan Accept-Encoding ekleyin.
  2. Python'daki requests kütüphanesi bunu otomatik olarak yapar ve yanıtı kendisi açar.
  3. Bu seçeneği elle kapatmadığınızdan emin olun.
  4. Yanıtın Content-Encoding başlığını kontrol edin: gzip veya br yazıyorsa sıkıştırma çalışıyor demektir.

Buradaki br, brotli anlamına gelir - gzip'ten daha yoğun sıkıştıran daha modern bir algoritmadır. Çoğu sunucu bunu destekler. Python'da brotli kullanmak için pip install brotli komutuyla brotli paketini kurun.

İpucu: Sıkıştırma, trafik açısından ücretsizdir ve işlemci yükü açısından neredeyse ücretsizdir. Her zaman açık tutun. Yüksek tüketimde kontrol edilmesi gereken ilk şey budur.

Yöntem 2: GET Yerine HEAD Kullanın

Yalnızca başlıklara ihtiyacınız olduğunda - örneğin, sayfanın var olup olmadığını kontrol etmek, boyutunu veya değiştirilme tarihini öğrenmek - HEAD isteği kullanın. Başlıkları gövdesiz olarak döndürür.

  1. requests.get yerine requests.head çağırın.
  2. İhtiyacınız olan başlıkları response.headers içinde kontrol edin.
  3. Bu durumda gövde iletilmez; bu tür kontrollerde tasarruf yüzde 99'a ulaşır.

HEAD için tipik senaryolar: bağlantı durumunu kontrol etme, indirmeden önce dosya boyutunu belirleme, önbellek için son değiştirilme tarihini kontrol etme.

Yöntem 3: Gereksiz Yönlendirmelerden Kaçının

Her yönlendirme, ekstra bir tam istek-yanıttır. Site sürekli olarak http'den https'e veya bir adresten başka bir adrese yönlendiriyorsa, gereksiz turlar için ödeme yaparsınız.

  1. Doğrudan nihai adresi kullanın: https ile ve gereksiz eğik çizgiler olmadan.
  2. Adresin www'ya yönlendirdiğini biliyorsanız, doğrudan www sürümüne gidin.
  3. Kütüphanede, süreci elle kontrol etmek için allow_redirects parametresini False yaparak otomatik yönlendirme takibini devre dışı bırakabilirsiniz.
  4. Yönlendirme haritasını bir kez çıkarın ve sonrasında doğrudan nihai adreslere gidin.

Yöntem 4: Basit İsteklerde Görsel ve Medya Yüklemeyi Kapatın

Tarayıcı yerine requests kütüphanesiyle çalıştığınızda, görselleri otomatik olarak yüklemezsiniz. requests yalnızca belirttiğiniz URL'yi çeker. Bu, tarayıcıya karşı büyük bir avantajdır.

Yalnızca HTML'e ihtiyacınız varsa, requests.get size görselsiz HTML döndürür; çünkü görseller, HTML içindeki bağlantılar aracılığıyla tarayıcı tarafından ayrı isteklerle yüklenir. Siz istemedikçe kütüphane bunu yapmaz.

İpucu: Metin verisi toplama görevlerinde tarayıcı yerine basit HTTP kütüphanelerini tercih edin. Medya, yazı tipi ve izleyici yüklemediğiniz için trafik tasarrufu otomatik olarak katlanarak ortaya çıkar.

✅ Kontrol: requests ve tarayıcıyla yüklenen aynı sayfanın ağırlığını karşılaştırın. Fark genellikle basit istek lehine 10-30 kat olur.

Adım 3: Headless Tarayıcı ile Çalışma ve Kaynak Engelleme

Bu adımın amacı: tarayıcıda ağır kaynak türlerini engellemeyi öğrenmek. Tarayıcıya gerçekten ihtiyaç duyulduğunda trafik açısından en büyük kazanç budur.

Tarayıcı Ne Zaman Gereklidir?

Bazen tarayıcı olmadan olmaz: veriler sayfa açıldıktan sonra scriptlerle yüklenir, basit isteklere karşı koruma vardır veya içerik dinamik olarak oluşturulur. Bu durumda tarayıcı her şeyi yükler ve trafik fırlar. Çözüm: gereksiz kaynak türlerini yakalayıp engellemek.

Playwright'da Kaynak Engelleme

Playwright, tarayıcının her isteğini yakalamanıza ve geçip geçmeyeceğine karar vermenize olanak tanır. Görselleri, yazı tiplerini, medyayı ve stilleri iptal edeceğiz.

  1. browser_saver.py dosyasını oluşturun.
  2. playwright.sync_api'dan sync_playwright'ı içe aktarın.
  3. Tarayıcıyı headless modda başlatın.
  4. Proxy parametresiyle proxy ayarlarına sahip bir bağlam (context) oluşturun.
  5. Tüm URL'ler için page.route ile bir rota işleyicisi kurun.
  6. İşleyicinin içinde kaynak türünü request.resource_type üzerinden kontrol edin.
  7. Tür engellenecekler listesindeyse route.abort'u çağırın.
  8. Aksi halde route.continue_'yı çağırın.

Tipik bir metin toplama görevinde engellenecek türler listesi: image, media, font, stylesheet. Bazen scriptlerin bir kısmını da engelleyebilirsiniz, ancak dikkatli olun - onlar olmadan içerik yüklenmeyebilir.

İşleyici Mantığı Örneği

İşleyici bir istek nesnesi alır. request.resource_type'ı alıp engellenenler listesiyle karşılaştırırsınız. Kaynak bir görsel veya yazı tipiyse onu iptal edersiniz ve tarayıcı bunun için trafik harcamaz. Belge veya gerekli bir scriptse geçmesine izin verirsiniz.

Önemli nokta: image, media ve font engellemesi, metin verisi toplamayı neredeyse hiç bozmaz, ancak trafiğin ana kısmından tasarruf sağlar. Tam da bunlarla başlayın; script ve stil engellemesini ancak sayfanın hâlâ gerekli verileri verdiğini doğruladıktan sonra ekleyin.

Node'da Puppeteer ile Kaynak Engelleme

  1. page.setRequestInterception değerini true yaparak istek yakalamayı etkinleştirin.
  2. request olayına abone olun.
  3. İşleyicide request.resourceType'ı kontrol edin.
  4. Görseller, yazı tipleri ve medya için request.abort'u çağırın.
  5. Diğerleri için request.continue'u çağırın.

⚠️ Dikkat: Stil engelleme, öğelerin görünürlüğüne bağlı dinamik içeriğe bazen engel olabilir. Stil engellemesinden sonra veriler kaybolursa, stylesheet'i izin verilenler listesine geri ekleyin.

İpucu: Engellenen ve geçen isteklerin sayacını ekleyin. Rakamlarda isteklerin yüzde 80-90'ının engellendiğini ve bunun doğrudan para tasarrufu olduğunu göreceksiniz.

Tarayıcıda Ek Tasarruf

  • Motor destekliyorsa, bağlam ayarları düzeyinde görsel yüklemeyi kapatın.
  • Gereksiz sekmeler açmayın; her sekme kendi kaynak setini yükler.
  • Verileri aldıktan hemen sonra sayfayı kapatın, açık tutmayın.
  • Yeniden başlatmak yerine bir dizi sayfa için aynı tarayıcı bağlamını yeniden kullanın.

✅ Kontrol: Aynı sayfada tarayıcıyı engellemeli ve engellemesiz çalıştırın, trafiği kendi sayacınızla karşılaştırın. Tasarruf yüzde 70-90 olmalıdır. Daha azsa, rota işleyicisinin gerçekten çalıştığını kontrol edin.

Adım 4: Önbellekleme ve İstek Tekilleştirme (Deduplication)

Bu adımın amacı: aynı şey için iki kez gitmeyi bırakmak. Değişmeyen veriler için tekrarlanan istekler boşa harcanan paradır.

Tekrarlar Neden Oluşur?

Büyük görevlerde aynı kaynak birden çok kez istenir: tüm sayfalardaki ortak script, tekrarlanan bağlantılar, çökmüş bir scriptin baştan başlatılması. Her tekrar, yeniden ödediğiniz trafiktir.

Basit Yanıt Önbellekleme

  1. Anahtarın URL, değerin yanıt olduğu bir sözlük veya yerel veritabanı oluşturun.
  2. İstekten önce URL'nin önbellekte olup olmadığını kontrol edin.
  3. Varsa, ağ üzerinden istek yapmadan verileri önbellekten alın.
  4. Yoksa isteği yapın ve yanıtı önbelleğe kaydedin.
  5. Çalıştırmalar arasında kalıcı önbellek için yanıtları dosyalara veya yerel veritabanına kaydedin.

Böyle bir önbellek, özellikle bir scripti hata ayıklarken ve üst üste birçok kez çalıştırırken etkilidir. İkinci ve sonraki çalıştırmalar verileri diskten alır ve tek bayt ağ trafiği harcamaz.

URL Listesini Tekilleştirme

  1. Çalışmaya başlamadan önce tüm URL'leri tek bir listede toplayın.
  2. Kopyaları kaldırmak için listeyi bir kümeye dönüştürün.
  3. Adresleri normalleştirin: gereksiz parametreleri kaldırın, eğik çizgilerle tek bir biçime getirin.
  4. Yalnızca benzersiz adresleri işleyin.

İpucu: Çoğu zaman kopyalar, içeriği değiştirmeyen adresin sonundaki farklı parametrelerle gizlenir. Karşılaştırmadan önce izleme ve sıralama etiketlerini kesin; benzersiz URL sayısı belirgin şekilde azalacaktır.

Tasarruf için Koşullu İstekler

Aynı sayfaları periyodik olarak kontrol ediyorsanız, koşullu istekler kullanın. Sunucu yalnızca veriler değiştiyse tam yanıt gönderir.

  1. İlk istekte yanıttaki ETag ve Last-Modified başlıklarını kaydedin.
  2. Tekrarlanan istekte bunları If-None-Match ve If-Modified-Since başlıklarında geri gönderin.
  3. Veriler değişmediyse sunucu, gövdesiz 304 durum koduyla kısa bir yanıt döndürür.
  4. Yalnızca küçücük bir başlık için ödeyerek tüm gövde ağırlığından tasarruf edersiniz.

✅ Kontrol: Önbelleği uyguladıktan sonra, aynı verilerle scriptin yeniden çalıştırılması sıfıra yakın trafik göstermelidir. Trafik hâlâ yüksekse, önbellek kontrolünün ağ isteğinden önce olduğunu, sonra olmadığını doğrulayın.

Adım 5: Trafik Bütçesi Hesaplama

Bu adımın amacı: tüketimi tahmin etmeyi ve görevin ortasında bakiyesiz kalmamak için yedek ayırmayı öğrenmek.

Temel Formül

Temel formül basittir: toplam trafik, sayfa sayısı ile tek bir sayfanın ortalama ağırlığının çarpımına eşittir. Ancak detaylarda iş var; biz bunları hesaba katacağız.

  1. Tüm optimizasyonlardan sonra işlenen bir sayfanın ortalama ağırlığını belirleyin.
  2. Planlanan sayfa sayısıyla çarpın.
  3. Bağlantı ek yükünü ekleyin - yaklaşık yüzde 15 üstü.
  4. Tekrarlar ve hatalar için yedek ekleyin - ayrıca yüzde 20.
  5. Ortaya çıkan sayı, gerçekçi trafik bütçenizdir.

Ortalama Ağırlık Nasıl Ölçülür?

  1. Optimize edilmiş scriptinizi 50-100 sayfalık bir örneklem üzerinde çalıştırın.
  2. Toplam trafiği kendi sayacınızla hesaplayın.
  3. Sayfa sayısına bölün - tek bir sayfanın ortalama ağırlığını elde edin.
  4. Formülde teorik varsayımları değil, tam olarak bu sayıyı kullanın.

Hesaplama Örneği

Diyelim ki medya engellemesinden sonra sayfa başına ortalama ağırlık 150 kilobayt çıktı. 100.000 sayfa işlemeniz gerekiyor. Hesaplayalım: 150 kilobayt ile 100.000'i çarpıyoruz, 15.000.000 kilobayt yani yaklaşık 14,3 gigabayt elde ediyoruz. Üzerine yüzde 15 ek yük ve yüzde 20 yedek ekliyoruz - toplamda yaklaşık 19,5 gigabayt. Tarife seçerken tam da bu hacme göre hareket etmelisiniz.

Optimizasyonsuz durumla karşılaştırın: her sayfa 3 megabayt olsaydı, aynı 100.000 sayfa 300 gigabayt ederdi. On beş kat fark, kelimenin tam anlamıyla fatura farkıdır.

İpucu: Büyük bir çalıştırmadan önce daima küçük bir örneklem üzerinde deneme yapın. Ölçülen ortalama ağırlık, her türlü varsayımdan daha dürüsttür ve faturada hoş olmayan bir sürprizden korur.

⚠️ Dikkat: Yedek payı unutmayın. Gerçek görevler her zaman sürprizler yapar: sayfaların bir kısmı daha ağır olur, bazı istekler tekrarlanmak zorunda kalır. Yedeksiz bütçe en olmadık anda tükenir.

Tasarruf Yöntemleri Tablosu

Aşağıda ana yöntemlerin özeti var: her biri ne kadar tasarruf ettiriyor ve karşılığında ne ödüyorsunuz.

  • gzip ve brotli sıkıştırma - metin verilerinde yüzde 60-80 tasarruf sağlar - açma işlemi sırasında önemsiz bir işlemci yükü ödersiniz.
  • Tarayıcı yerine HTTP kütüphanesi kullanmak - yüzde 90-95 tasarruf sağlar - scriptlerle yüklenen verileri alamama riskini ödersiniz.
  • Tarayıcıda görsel ve medya engelleme - yüzde 50-70 tasarruf sağlar - istek yakalama ayarıyla ödersiniz, risk minimumdur.
  • Yazı tipi engelleme - yüzde 5-10 tasarruf sağlar - neredeyse hiçbir şey ödemezsiniz, veriler için yazı tipleri gerekmez.
  • Script ve stil engelleme - yüzde 15-25 tasarruf sağlar - içeriğin yüklenmeme riskini ödersiniz, kontrol gerekir.
  • GET yerine HEAD - kontrol isteklerinde yüzde 99'a kadar tasarruf sağlar - yanıt gövdesini alamama durumunu ödersiniz.
  • Yönlendirmeleri ortadan kaldırma - yönlendiren sitelerde yüzde 10-30 tasarruf sağlar - adres haritası çıkarmak için tek seferlik zaman ödersiniz.
  • Yanıt önbellekleme - tekrarlarda yüzde 100'e kadar tasarruf sağlar - önbellek için disk alanı ödersiniz.
  • URL tekil hale getirme (deduplication) - kopyalar varsa yüzde 10-40 tasarruf sağlar - listenin tek seferlik normalizasyonuyla ödersiniz.
  • ETag ile koşullu istekler - değişmeyen verilerde yüzde 99'a kadar tasarruf sağlar - sürüm etiketlerini saklama maliyeti ödersiniz.

✅ Kontrol: Bütçeyi formülle hesaplayın ve tarife bakiyesiyle karşılaştırın. Yedek pay yeterliyse başlayabilirsiniz. Değilse, tasarruf yöntemlerine geri dönün ve sayfanın ortalama ağırlığını azaltın.

Adım 6: Sınırsız Ne Zaman Daha Avantajlı, Hacim Başına Ödeme Ne Zaman?

Bu adımın amacı: belirli bir görev için tarifeyi dürüstçe seçmek, yanlış faturalandırma modeli yüzünden fazla ödememek.

Gigabayt Başına Ödeme Ne Zaman Avantajlıdır?

  • Görev tek seferlik veya nadirdir, hacimler küçüktür.
  • Trafiği iyi optimize ettiniz ve tüketimi tam olarak biliyorsunuz.
  • Medya engelleme sayesinde sayfanın ortalama ağırlığı düşüktür.
  • Tepe yükü nadirdir; zamanın çoğunda trafik azdır.
  • Şeffaflık sizin için önemlidir: yalnızca kullandığınız kadar ödersiniz.

Sabit Fiyatlı Sınırsız Ne Zaman Avantajlıdır?

  • Görev süreklidir, hacimler büyük ve stabildir.
  • Tarayıcı üzerinden çalışmak zorundasınız ve ağır sayfalar yüklüyorsunuz.
  • Görevin bir parçası olarak görsellere, videolara veya diğer ağır medyaya ihtiyaç vardır.
  • Tüketim öngörülemez ve aniden artabilir.
  • Psikolojik rahatlık sizin için önemlidir: aşırı tüketim riski olmadan sabit ödeme.

Geçiş Noktası Nasıl Hesaplanır?

  1. Hacim başına ödemeli tarifede gigabayt başına fiyatı alın.
  2. Aynı dönem için sınırsız tarifenin fiyatını alın.
  3. Sınırsız tarifenin fiyatını gigabayt fiyatına bölün - tarifelerin eşit olduğu gigabayt cinsinden hacmi elde edersiniz.
  4. Tüketim tahmininiz bu hacmin üzerindeyse sınırsız tarifeyi alın.
  5. Daha düşükse hacim başına ödemeyi seçin.

Örneğin, sınırsız tarife, kullanım başına tarifede kabaca 50 gigabayt değerinde olsun. Yani 50 gigabayttan fazla harcıyorsanız, sınırsız daha ucuzdur. Daha az harcıyorsanız, hacim başına ödeme daha avantajlıdır. 5. adımdaki ölçtüğünüz bütçe size anında cevabı verir.

İpucu: Önce trafiği optimize edin, sonra tarife seçin. İyi bir optimizasyon sizi sınırsız bölgesinden avantajlı kullanım başına ödeme bölgesine taşır ve önemli bir miktar tasarruf sağlar.

Kombine Strateji

Bazen iki yaklaşımı bir arada tutmak optimaldir: hafif metin görevlerini kullanım başına tarifeyle, ağır tarayıcı görevlerini ise sınırsızla yürütmek. Görev türüne göre ayırma, her şey için tek bir tarifeden genellikle daha avantajlıdır.

✅ Kontrol: Gerçek tahmininiz için her iki seçeneği para olarak hesaplayın. Doğru seçimden kaynaklanan somut bir tasarruf miktarı elde etmelisiniz. Fark önemsizse, yönetimi daha kolay olan tarifeyi alın.

Sonucu Kontrol Etme: Kontrol Listesi

Trafik ölçümünü ve tasarrufu doğru yapılandırdığınızdan emin olmak için listeyi gözden geçirin.

  • Python veya Node üzerindeki trafik sayacı hatasız çalışıyor ve rakamları veriyor.
  • Sayacın göstergeleri, ek yük düzeltmesiyle kişisel hesabın istatistikleriyle uyumludur.
  • İsteklerde sıkıştırma açık; yanıtlarda Content-Encoding gzip veya br görünüyor.
  • Kontrol görevleri için GET yerine HEAD kullanılıyor.
  • Gereksiz yönlendirmeler olmadan doğrudan nihai adreslere gidiyorsunuz.
  • Metin görevleri için mümkün olduğunda tarayıcı yerine HTTP kütüphanesi kullanıyorsunuz.
  • Tarayıcıda görsel, medya ve yazı tipi engelleme yapılandırıldı.
  • Yanıt önbellekleme ayarlandı; yeniden çalıştırma neredeyse hiç trafik harcamıyor.
  • URL listesi kopyalardan temizlendi.
  • Bütçe, yüzde 15 ve 20 yedek payıyla formüle göre hesaplandı.
  • Tüketim tahminine uygun tarife seçildi.

Nasıl Test Edilir?

  1. Optimize edilmiş scripti 100 sayfalık bir örneklem üzerinde çalıştırın.
  2. Kişisel hesapta öncesini ve sonrasını kaydedin.
  3. Sayfa sayısına bölün ve hesaplamadaki ortalama ağırlıkla karşılaştırın.
  4. Eşleşiyorsa sistem çalışıyor demektir; ölçeği büyütebilirsiniz.

✅ Kontrol: Deneme çalıştırması 100 sayfa için tahmini bütçeye uyduysa, tam çalıştırmaya hazırsınız. Sonucu ölçekle çarpın ve bakiyenin yeterli olduğundan emin olun.

Tipik Hatalar ve Çözümleri

Trafik ölçümü ve tasarrufunda karşılaşılan yaygın sorunları ele alalım.

Hata 1: sayaç hesap ekranından daha az gösteriyor

Neden: yalnızca yanıt gövdelerini sayıyorsunuz, servis ise ek yüküyle birlikte tüm ağ trafiğini hesaba katıyor. Çözüm: yüzde 15-20'lik bir düzeltme payı ekleyin ve bunu bir hata değil, normal kabul edin.

Hata 2: sıkıştırma çalışmıyor

Neden: brotli paketi kurulmamış veya Accept-Encoding elle kapatılmış. Çözüm: brotli paketini kurun, istek başlıklarını kontrol edin ve yanıtta Content-Encoding olduğundan emin olun.

Hata 3: kaynak engellemesinden sonra veriler kayboldu

Neden: içeriğin yüklenmesinin bağlı olduğu scriptleri veya stilleri engellediniz. Çözüm: script ve stylesheet'i izin verilenlere geri ekleyin, yalnızca image, media ve font engelleyin.

Hata 4: önbelleklemede trafik düşmüyor

Neden: önbellek kontrolü ağ isteğinden sonra, önünde değil. Çözüm: önce önbelleği kontrol edin; yalnızca veri yoksa ağ üzerinden istek yapın.

Hata 5: işleyici varken bile tarayıcı trafik harcıyor

Neden: rota işleyicisi yanlış URL şablonuna veya yükleme başladıktan sonra eklenmiş. Çözüm: yakalamayı sayfa açılmadan önce ve yıldız işaretiyle tüm URL'ler için kurun.

Hata 6: gerçek tüketim tahminden kat kat yüksek

Neden: ortalama ağırlık deneme çalıştırmasıyla ölçülmemiş, teoriden alınmış. Çözüm: büyük bir çalıştırmadan önce her zaman gerçek bir örneklemde ortalama ağırlığı ölçün.

Hata 7: bütçe görevin ortasında bitti

Neden: tekrarlar ve ek yük için yedek ayrılmamış. Çözüm: tahmine toplam yüzde 35 yedek ekleyin ve süreç boyunca bakiyeyi takip edin.

Hata 8: aynı adrese çok sayıda tekrarlanan istek

Neden: adresin sonundaki farklı etiketler nedeniyle URL listesinde kopyalar var. Çözüm: adresleri normalleştirin, izleme parametrelerini kesin ve listeyi küme haline getirin.

Ek İmkanlar ve Optimizasyon

Temel tasarruf oturduğunda, daha da fazlasını çıkarabilirsiniz.

Büyük Yanıtların Akış Olarak İşlenmesi

Yanıt büyükse ve yalnızca bir kısmı gerekiyorsa, onu akış olarak okuyun ve ihtiyacınız olanı alır almaz okumayı bırakın. Böylece dosyanın tamamını indirmezsiniz. Bu, veriler büyük bir belgenin başında olduğunda kullanışlıdır.

Yanıt Boyutu Sınırlama

Kabul etmeye hazır olduğunuz maksimum yanıt boyutunu belirleyin. Sunucu daha fazlasını gönderiyorsa, yüklemeyi kesin. Bu, aynı anda çok fazla trafik tüketebilecek beklenmedik ağır sayfalara karşı bir korumadır.

Toplu İşleme ve Paralellik

Paralel istekler tek başına trafikten tasarruf ettirmez, ancak görevi daha hızlı tamamlamanızı ve tüketim sorununu daha erken görmenizi sağlar. Trafik üzerindeki kontrolü kaybetmemek için makul sayıda eşzamanlı bağlantı tutun.

Gerçek Zamanlı Günlükleme ve İzleme

  1. Canlı trafik sayacı tutun ve birkaç yüz istekte bir yazdırın.
  2. Scriptin duracağı bir eşik değeri belirleyin.
  3. Böylece bütçeyi asla fark etmeden aşmazsınız.

İpucu: Trafik limitinde otomatik durma en iyi garantidir. Script belirlenen eşikte kendiliğinden duracak ve mantık hatası olsa bile aşırı tüketim imkânsız hale gelecektir.

Yalnızca Gerekli API Parçalarıyla Çalışma

Veriler API üzerinden erişilebilirse, desteklenen yerlerde yalnızca ihtiyacınız olan alanları isteyin. Birçok arayüz, hangi alanların döndürüleceğini belirtmenize olanak tanır ve bu, tam yanıta kıyasla yanıtın boyutunu ciddi şekilde azaltır.

SSS: Trafik Tasarrufu Hakkında Sık Sorulan Sorular

Gigabayt Başına Ödemede Giden Trafik Sayılıyor mu?

Genellikle hem gelen hem giden trafik sayılır, ancak giden trafik (istekleriniz) gelen trafikten (sunucu yanıtları) kat kat azdır. Ana tasarruf her zaman gelen trafiktedir.

İstemci Tarafındaki Hesaplama Ne Kadar Doğru?

Gerçek ağ trafiğine göre doğruluk yaklaşık yüzde 85-95'tir. Fark, bağlantının ek yüküdür. Bir düzeltme payı eklendiğinde bütçe planlamak için bu yeterlidir.

Tarayıcıdan Tamamen Vazgeçilebilir mi?

Birçok metin toplama görevi için evet; basit bir HTTP kütüphanesi işi görür ve trafikten kat kat tasarruf sağlar. Tarayıcı yalnızca içeriğin sayfa yüklendikten sonra scriptlerle oluşturulduğu durumlarda gereklidir.

Sıkıştırma Varsayılan Olarak Açık mı?

Çoğu modern kütüphanede evet, ancak kontrol etmekte fayda var. brotli için ayrı bir paket gerekebilir. Her zaman yanıttaki Content-Encoding başlığını doğrulayın.

Tarayıcıda Öncelikle Ne Engellenmeli?

Görseller, medya ve yazı tipleriyle başlayın - bu en büyük ve en güvenli kazanımdır. Scriptleri ve stilleri yalnızca verilerin hâlâ yüklendiğini doğruladıktan sonra engelleyin.

Bütçenin Yeteceğini Nasıl Anlarsınız?

Deneme çalıştırmasında sayfanın ortalama ağırlığını ölçün, sayfa sayısıyla çarpın, yüzde 35 yedek ekleyin ve tarife bakiyesiyle karşılaştırın. Uyuyorsa - yeterlidir.

Tek Geçişte Önbellek İşe Yarar mı?

Tekrarsız tek geçişte faydası azdır, ancak hata ayıklama ve yeniden başlatmalarda ciddi tasarruf sağlar. Koşullu istekler ve tekilleştirme ise tek geçişte bile yardımcı olur.

Büyük ve Sürekli Hacimler için Ne Daha Avantajlı?

Genellikle sabit fiyatlı sınırsız. Geçiş noktasını hesaplayın: sınırsızın fiyatını gigabayt fiyatına bölün ve tüketim tahminiyle karşılaştırın.

Yönlendirme Sayısı Faturayı Etkiler mi?

Evet, her yönlendirme ekstra bir istek-yanıttır. Yönlendirme zincirleri olan sitelerde gereksiz geçişleri ortadan kaldırmak, trafiğin kayda değer bir kısmından tasarruf sağlar.

Bütçe Yanlışlıkla Nasıl Aşılmaz?

Canlı bir sayaç ve trafik eşiğine ulaşıldığında otomatik durma ayarlayın. Script kendiliğinden duracak ve bir hata olsa bile aşırı tüketim imkânsız hale gelecektir.

Sonuç

Trafiğin nereye gittiğini anlamamaktan, tüketim üzerinde tam kontrole sahip olmaya kadar bir yol kat ettiniz. Artık sayfa ağırlığını bileşenlerine ayırabiliyor ve ağırlığın büyük kısmına ihtiyacınız olmadığını görüyorsunuz. Trafik sayacını kurdunuz ve hesap istatistikleriyle doğruluyorsunuz. Sıkıştırma uyguluyor, GET yerine HEAD kullanıyor, yönlendirmeleri kaldırıyor ve ağır tarayıcı yerine hafif HTTP kütüphanelerini tercih ediyorsunuz.

Tarayıcıya gerçekten ihtiyaç olduğunda görselleri, medyayı ve yazı tiplerini engelliyor ve trafiği yüzde 70-90 oranında kesiyorsunuz. Yanıtları önbelleğe alıyor ve aynı şey için iki kez gitmiyorsunuz. En önemlisi, bütçeyi yedek payı olan formülle hesaplıyor ve tarifeyi rastgele değil, bilinçli seçiyorsunuz.

Sonra Ne Yapmalı?

  1. Temel yöntemleri bugün mevcut projenize uygulayın.
  2. Bir deneme çalıştırması yapın ve sayfanın gerçek ortalama ağırlığını ölçün.
  3. Bütçeyi yeniden hesaplayın ve gerekirse tarifeyi değiştirin.
  4. Sigorta olarak limite göre otomatik durmayı yapılandırın.

Trafik tasarrufu, her projede kendini amorti eden bir beceridir. Ölçüm kurulumuna ve optimizasyona bir kez zaman ayırdığınızda, aynı sonuç için kat kat daha az ödersiniz. Küçükten başlayın, etkiyi rakamlarla ölçün ve aynı işin ne kadar daha ucuza gelebileceğine şaşıracaksınız.