🗺️ Sitemap Gerçek Zamanlı Güncelleme Sorunu

Sitemap neden otomatik güncellenmiyor ve nasıl düzeltilir?
📅 2025-12-05 🎯 Tenant: ixtif.com 👤 Sitemap cache sorunu

🚨 Sorun Tespiti

Ana Problem

Yeni blog eklediğinde sitemap.xml 1 saat boyunca güncellenmiyor!

📊 Test Sonucu:

  • DB'de en son blog: 569 - "Transpalet Nasıl Seçilir?" (04:03:15)
  • Sitemap'te görünmüyor! Cache 1 saat boyunca eski veriyi gösteriyor
  • Manuel cache temizledikten sonra → Blog sitemap'te göründü!

🔍 Neden Oluyor?

  • 1. Route cache kullanıyor: Sitemap route'u Cache::remember ile 1 saat cache'liyor
  • 2. Observer cache temizliyor ama... BlogObserver Cache::forget çağırıyor ancak route tekrar Cache::remember kullanıyor!
  • 3. Race condition: Cache temizlendiği anda başka bir istek yeni cache oluşturuyor

📋 Mevcut Kod Akışı

✅ BlogObserver::saved()

Cache::forget sitemap_xml_2

❌ Sitemap Route

Cache::remember → Eski cache 3600 saniye

🚫 Yeni blog sitemap'te görünmüyor!

✅ Çözüm: Gerçek Zamanlı Sitemap

🎯 Strateji

Observer-driven cache invalidation: Observer cache'i temizlediğinde route yeniden generate etmeli, eski cache'i kullanmamalı!

1

Route Cache Mantığını Düzelt Kritik

Sitemap route'unda Cache::has kontrolü ekle. Cache varsa kullan, yoksa yeniden generate et.

📝 Mantık:

  • • Cache anahtarını kontrol et
  • • Cache VARSA → Döndür
  • • Cache YOKSA → Generate et + Cache'e kaydet
  • • Observer cache'i temizlediğinde → Route yeniden generate edecek

Dosya: routes/web.php - Line 370-384

2

Diğer Observer'lara Ekle Önemli

Sadece BlogObserver sitemap cache'ini temizliyor. Page, Shop, Portfolio de temizlemeli!

📝 Eklenecek Observer'lar:

  • • PageObserver → Page ekleme/güncelleme/silme
  • • ShopProductObserver → Ürün ekleme/güncelleme/silme
  • • PortfolioObserver → Portfolio ekleme/güncelleme/silme
3

IndexNow Entegrasyonu Opsiyonel

IndexNow API ile Google/Bing'e sitemap güncellemesini bildir.

Mevcut servis: app/Services/IndexNowService.php (Zaten var!)

4

Test ve Doğrulama Zorunlu

🧪 Test Senaryosu:

  1. Yeni blog ekle
  2. 5 saniye bekle
  3. Sitemap.xml'i curl ile çek
  4. Yeni blog URL'i sitemap'te var mı kontrol et
  5. ✅ BAŞARI: Anında görünmeli!

🎯 Beklenen Sonuç

❌ Önce

  • ✗ Yeni blog → 1 saat bekle
  • ✗ Manuel cache temizle
  • ✗ Google geç indeksler

✅ Sonra

  • ✓ Yeni blog → Anında sitemap'te!
  • ✓ Cache otomatik temizlenir
  • ✓ Hızlı indeksleme = İyi SEO