John Flaxman's randoms

LCP'yi 2,5 saniyenin altına indirmek

LCP sorunu olan sitelerin çoğunda ilk refleks görselleri sıkıştırmak oluyor. Bazen işe yarıyor, çoğu zaman yaramıyor. Çünkü LCP tek bir sayı gibi görünse de aslında dört ayrı gecikmenin toplamı ve hangisinin büyük olduğunu bilmeden yapılan optimizasyon rastgele bir denemeden ibaret.

Hedef belli: gerçek kullanıcıların 75. yüzdeliğinde LCP 2,5 saniye veya altı. Aşağıda bu hedefe nasıl yaklaştığımı adım adım anlatıyorum.

LCP'yi 2,5 saniyenin altına indirmek »

Sayfa kayması (CLS) nasıl sıfırlanır?

Okumaya başladığınız paragraf aşağı kayıyor, tıklamak üzere olduğunuz buton yerinden oynuyor ve yanlış linke basıyorsunuz. CLS bu deneyimi ölçüyor. İyi haber şu: üç Core Web Vitals metriği içinde düzeltmesi en öngörülebilir olan CLS, çünkü sebeplerin neredeyse tamamı birkaç kalıba giriyor.

Hedef, gerçek kullanıcıların 75. yüzdeliğinde CLS değerinin 0,1 veya altında olması. Ben çoğu sitede sıfıra yakın bir değeri makul bir hedef olarak görüyorum.

Sayfa kayması (CLS) nasıl sıfırlanır? »

Paylaşımlı hostingte hızlı site için önbellek ve sıkıştırma

Paylaşımlı hostingteki bir WordPress sitesi yavaş olduğunda ilk öneri genelde "VPS'e geç" oluyor. Çoğu zaman erken bir öneri. Aynı sunucuda, aynı paketle, sadece doğru PHP sürümü, sayfa önbelleği ve birkaç satırlık .htaccess ile TTFB'yi ciddi şekilde düşürmek mümkün.

Ama paylaşımlı hostingin bir tavanı da var. Aşağıda önce ölçmeyi, sonra yapılabilecekleri, en sonda da o tavana ne zaman çarptığınızı nasıl anlayacağınızı anlatıyorum.

Paylaşımlı hostingte hızlı site için önbellek ve sıkıştırma »

SEO'ya zarar vermeden Cloudflare ile hızlanmak

Cloudflare'i açmak birkaç dakika sürüyor, ama panelde onlarca anahtar var ve her biri "hızlandırır" veya "korur" diye tanıtılıyor. Bazıları gerçekten işe yarıyor, bazıları sessizce JavaScript'i bozuyor, bazıları da en kötüsünü yapıyor: Googlebot'a 403 veya challenge sayfası gösteriyor ve siz bunu sunucu loglarında hiç görmüyorsunuz.

Aşağıda hangi ayarları gönül rahatlığıyla açtığımı, hangilerine dikkatle yaklaştığımı ve Googlebot'un siteye sorunsuz eriştiğini nasıl doğruladığımı anlatıyorum. Cloudflare panelindeki menü adları zaman zaman değişiyor; bu yüzden özellik adlarına odaklanın, menü yoluna değil.

SEO'ya zarar vermeden Cloudflare ile hızlanmak »

WebP, AVIF ve lazy load ile görsel optimizasyonu

Çoğu sitede sayfa ağırlığının en büyük kısmı görsellerden geliyor. Buna rağmen görsel optimizasyonu genellikle "bir eklenti kurdum, sıkıştırıyor" seviyesinde kalıyor. Oysa asıl kazanç sıkıştırma oranında değil; doğru formatı, doğru boyutu ve doğru yükleme zamanlamasını bir arada kurmakta.

Aşağıda WebP ve AVIF arasında nasıl seçim yaptığımı, HTML tarafını nasıl kurduğumu ve lazy load'u nerede kullanıp nerede asla kullanmadığımı anlatıyorum.

WebP, AVIF ve lazy load ile görsel optimizasyonu »

Core güncellemesinden sonra düşüş analizi: adım adım yöntem

Core güncellemesi duyurulduktan birkaç gün sonra trafik grafiği aşağı dönünce ilk refleks panik oluyor. Başlıklar değiştiriliyor, içerikler aceleyle yeniden yazılıyor, bazen sayfalar siliniyor. Çoğu zaman da düşüşün ne kadarının gerçekten güncellemeden kaynaklandığı hiç ölçülmeden.

Ben düşüşü önce bir veri problemi gibi ele alıyorum. Ne zaman başladı, nereyi etkiledi, ne tür bir kayıp? Bu üç sorunun cevabı olmadan yapılan her değişiklik tahmine dayalıdır.

Core güncellemesinden sonra düşüş analizi: adım adım yöntem »

Search Console API ile veriyi her gün yedeklemek

Search Console performans verisi 16 ay geriye gider. Daha eskisi siliniyor; iki yıl önceki bir güncellemenin etkisini ya da uzun dönemli bir trendi görmek istediğinizde elinizde veri kalmıyor. Arayüz de ayrı bir sınır koyuyor: tablolarda ve dışa aktarımlarda en fazla 1000 satır görüyorsunuz.

API bu iki sorunu da çözüyor. Her istekte 25.000 satıra kadar veri dönüyor, sayfalama ile daha fazlası alınabiliyor. Veriyi her gün kendi veritabanınıza yazarsanız 16 ay sınırı da sizin için ortadan kalkıyor.

Search Console API ile veriyi her gün yedeklemek »

Performans raporundaki gizli fırsatlar (4-15. sıradaki sorgular)

Bir sitede en hızlı kazanılacak trafik çoğu zaman yeni içerikte değil, zaten ikinci sayfanın başında ya da birinci sayfanın altında duran sorgulardadır. Google bu sayfaları o sorguyla ilişkili buluyor, gösterim veriyor ama tıklama gelmiyor. Küçük bir itki ile üst sıralara çıkabilecek bu sorgular Performans raporunda duruyor, sadece arayüz onları size kendiliğinden göstermiyor.

Sorun şu: Search Console arayüzünde "pozisyonu 4 ile 15 arası olanları göster" diye bir filtre yok. Bu yüzden bu listeyi çıkarmak için ya dışa aktarıp kendiniz filtreleyeceksiniz ya da API kullanacaksınız.

Performans raporundaki gizli fırsatlar (4-15. sıradaki sorgular) »

Sıfırdan rank tracker: Search Console API ve SQLite ile

Ücretli rank tracker kullanmadan sıralama takibi yapmak isteyen herkesin aklına ilk gelen şey Google'ı kendi betiğiyle sorgulamak oluyor. Bunu yapmayın. Google sonuçlarını otomatik olarak kazımak Google'ın hizmet şartlarına aykırı, ayrıca kısa sürede CAPTCHA ve IP engeliyle karşılaşırsınız. Proxy havuzu kurmak, tarayıcı parmak izi taklit etmek gibi yollar hem etik değil hem de bakımı bitmeyen bir iş.

Benim çözümüm elimdeki en güvenilir veriyi kullanmak: Search Console. Google'ın kendi ölçtüğü gösterim ve pozisyon verisini her gün çekip SQLite'a yazıyorum, haftalık karşılaştırmayla en çok yükselen ve düşen sorguları listeliyorum.

Sıfırdan rank tracker: Search Console API ve SQLite ile »

Toplu title ve description denetimi için Python betiği

Birkaç yüz sayfalık bir sitede title ve description kontrolünü tek tek sayfa açarak yapmak mümkün değil. Masaüstü tarama araçları bu işi yapar ama çoğu ücretli ya da ücretsiz sürümde URL sınırı koyar. Oysa ihtiyaç basit: sitemap'teki her URL'yi aç, title ve description'ı al, sorunlu olanları listele.

Aşağıdaki betik tam olarak bunu yapıyor. Sitemap'i okuyor, sayfaları nazikçe tek tek çekiyor, eksik, çok uzun, çok kısa ve site içinde tekrar eden etiketleri işaretleyip bir CSV dosyasına yazıyor.

Toplu title ve description denetimi için Python betiği »