WordPress Medya Kütüphanesi Şişkinliği Nasıl Temizlenir
WordPress medya kütüphanesi, ilk kurulumda küçük ve yönetilebilir görünür. Birkaç yıl sonra, binlerce görsel ve yüzlerce megabayt boyutundaki gereksiz dosyalarla dolu bir klasör yapısıyla karşılaşmak sürpriz olmaz. Hosting faturalarının artması, yedek paketlerinin şişmesi ve sitenin zaman zaman yavaşlaması çoğu zaman bu birikmiş yükten kaynaklanır.
Sorun yalnızca "çok dosya var" değildir. Kullanılmayan küçük resimler (thumbnail), aynı görselin farklı isimlerle tekrar tekrar yüklenmesi ve veritabanı kaydı olmayan sahipsiz dosyalar (orphan) üç farklı katmanda birikerek işi içinden çıkılmaz hâle getirir. Her katmanın kendi teşhis ve çözüm yöntemi vardır.
Üç katman ayrı ayrı tanımlanır, güvenli bir temizleme sırası kurulur ve bir kez temizlendikten sonra aynı sorunu yeniden yaşamamak için alınması gereken basit önlemler netleşir.
Şişkinliğin üç kaynağı
WordPress medya kütüphanesinde dosya birikiminin üç farklı nedeni vardır ve bunları birbirinden ayırt etmeden temizlemeye başlamak, asıl sorunu çözmek yerine kullanılan dosyaları silme riskini doğurur.
Birinci kaynak, WordPress'in her yüklenen görsel için otomatik olarak ürettiği boyutlardır. Tema değiştirdiğinizde veya bir eklenti yeni boyutlar tanımladığında eski boyut dosyaları silinmez; üstüne yenileri eklenir. Zaman içinde her görsel için 8-12 farklı boyut dosyası oluşmuş olabilir ve bunların büyük çoğunluğu hiçbir sayfada kullanılmıyor olabilir.
Kopyalama da ciddi bir sorun kaynağıdır. İçerik editörleri görseli medya kütüphanesinde bulamadığında ya da aramak yerine hızla yüklemeyi tercih ettiğinde, aynı dosya farklı bir ad altında veritabanına bir kez daha kaydedilir. Zamanla onlarca tekrar birikerek hem disk alanını hem veritabanını şişirir.
Üçüncü kaynak sahipsiz dosyalardır. Silinen bir gönderiyle birlikte veritabanı kaydı kaldırılan ama fiziksel dosyası silinmeyen görseller, yükleme sırasında yarım kalan dosyalar ve FTP ile doğrudan kopyalanan içerikler bu kategoriye girer. WordPress medya kütüphanesi bu dosyaları görmez; ama dosya sistemi onları tutar.
Küçük resim birikimi ve tema değişikliği
WordPress bir görsel yüklendiğinde, functions.php veya eklentiler aracılığıyla kayıtlı her boyut için ayrı bir dosya oluşturur. Standart kurulumda thumbnail, medium, medium_large, large ve full olmak üzere en az beş dosya üretilir. Her eklenti kendi boyutlarını bu listeye ekleyebilir; WooCommerce, galeri eklentileri ve kaydırıcı bileşenleri genellikle birer veya ikişer özel boyut tanımlar.
Küçük resim üretimi için orijinal görselin yeterince büyük olması gerekir. 800x600 piksellik bir görsel, 1200px genişlikli büyük boyut için dosya üretemez; ama 200px genişlikli küçük resmi üretir. Bu nedenle her boyut için her görsel eşleşmez ve dosya sayısı düzensiz dağılır. Görsel boyutlarını önceden planlamak, bu birikimi baştan sınırlamak için en etkili yaklaşımdır; sonradan temizlemek her zaman daha zahmetlidir.
Tema değişikliği özellikle kritik bir andır. Yeni tema devreye girdiğinde yeni boyutlar kaydolur; mevcut görseller bu boyutlar için yeniden işlenebilir. Eski tema boyutlarına ait dosyalar ise silinmez. Her tema geçişi, kütüphaneye yeni bir küçük resim katmanı ekler; temizlenmezse bu katmanlar birikerek depolama alanını doldurmaya devam eder.
Mevcut boyutların listesini görmek için WP-CLI kullanışlı bir yol sunar:
wp media image-size
Bu komut, WordPress'in o anda kayıtlı tüm görsel boyutlarını ve her birinin genişlik-yükseklik değerlerini listeler. Listenin uzunluğu, yüklü eklentilerin ne kadar boyut tanımladığı hakkında iyi bir fikir verir; 15 veya daha fazla boyut satırı, temizlik için açık bir işarettir.
Sahipsiz dosyaları tespit etmek
Sahipsiz dosya, fiziksel olarak sunucuda bulunmasına karşın WordPress veritabanında hiçbir kaydı olmayan dosyadır. Bu dosyaları medya kütüphanesi ekranından göremezsiniz; yalnızca wp-content/uploads klasörüne doğrudan bakıldığında fark edilirler.
WordPress'in sahipsiz dosya tespiti için yerleşik bir aracı yoktur. WP-CLI ya da bu iş için tasarlanmış eklentilerden yararlanmak gerekir. Veritabanındaki eklenti kayıtlarını dışa aktarmak şu komutla yapılır:
wp media list --fields=file --format=csv > medya-listesi.csv
Bu komutun çıktısı, WordPress'in bildiği tüm eklenti dosyalarını listeler. Ardından dosya sistemindeki gerçek dosyalarla karşılaştırdığınızda, veritabanında eşleşmesi olmayan dosyalar ortaya çıkar. Bu karşılaştırma işlemini manuel yapmak yerine bir eklenti aracılığıyla otomatikleştirmek, büyük kütüphanelerde zaman kazandırır.
Tespit aşamasında aceleci davranmamak gerekir. Sahipsiz olarak işaretlenen bir dosyanın WordPress dışı bir araç, özel bir eklenti entegrasyonu veya harici bir servis tarafından kullanılıp kullanılmadığını kontrol etmek gerekebilir. Listeyi incelemeden silmeye başlamak, beklenmedik kayıplara zemin hazırlar.
Veritabanı ile dosya sistemi arasındaki fark
Sahipsiz dosyaların tersi de yaşanabilir: veritabanında kaydı olan ama fiziksel dosyası bulunmayan satırlar. Bir hosting göçü sırasında görseller taşınmamışsa, FTP ile doğrudan silinen dosyalar varsa ya da depolama alanı dolunca bazı dosyalar kaybolmuşsa bu durum ortaya çıkar. Bu kayıtlar medya kütüphanesinde kırık bağlantı olarak görünür; görsel sisteme eklenmiş gibi gösterilir ama dosya sunucuda yoktur.
İki sayının karşılaştırılması, sorunun boyutunu hızla ortaya koyar. Veritabanındaki eklenti kayıt sayısını öğrenmek için:
wp post list --post_type=attachment --format=count
Dosya sistemindeki gerçek dosya sayısına ise şu komutla bakılır:
find wp-content/uploads -type f | wc -l
Veritabanında 2.000 kayıt varken dosya sisteminde 14.000 dosya bulunması, sahipsiz dosya miktarını ve temizleme önceliğini ortaya koyar. Ters durum, yani veritabanında fazla kayıt bulunması, hosting göçü sırasında yaşanmış bir veri kaybına işaret eder ve ayrı bir müdahale gerektirir.
Kırık bağlantılar yalnızca disk alanı sorunu değildir. Bir sayfa bu görseli çağırdığında 404 döner; sitenizi tarayan SEO tarama botları bu hataları raporlar. Sıkıştırma ve temizlik sonrasında görsel kalitesini ölçmek, bu tür sorunları da kapsar ve düzenli kontrol alışkanlığını destekler.
Temizlik öncesi yedek ve hazırlık
Medya kütüphanesi temizliği geri alınamaz işlemler içerir. Bir görsel silindiğinde, ona bağlı tüm küçük resimler ve veritabanı kaydı da kaldırılır. Temizliğe başlamadan önce tam bir yedek almak bu nedenle zorunludur; tercihe bırakılacak bir adım değildir.
Yedek iki katmanlı olmalıdır: hem dosya sistemi (uploads klasörü), hem veritabanı. Hosting kontrol panelinden otomatik yedek indirmek yeterli başlangıç noktasıdır. Güvenli yere kopyalandığından emin olmadan temizleme işlemi başlatılmamalıdır.
Temizlik öncesi yapılması gereken ikinci hazırlık, hangi görsellerin aktif kullanıldığını anlamaktır. WordPress, bir görselin hangi gönderi veya sayfaya bağlı olduğunu post_parent ilişkisiyle tutar. Ancak bu ilişki her zaman güncel değildir; görseller page builder veya özel alan (custom field) üzerinden kullanılıyorsa bağlantı doğrudan tutulmaz. Temizleme aracı seçiminde bu durumu göz önünde bulundurmak gerekir.
Güvenli temizleme sırası
Temizliğin belirli bir sırayla yapılması hem riski azaltır hem sonucu ölçülebilir kılar. Rastgele başlamak yerine aşağıdaki sırayı izlemek, her aşamanın bir öncekinin üzerine inşa edilmesini sağlar.
Birinci adım: kayıt dışı boyutları kaldırın. functions.php veya bir eklentiye artık ihtiyaç duyulmayan boyut kayıtları varsa önce bunları kaldırın. Boyutu sistemden çıkarmadan dosyaları silmek, bir sonraki güncelleme veya yeniden oluşturma işleminde aynı boyutların tekrar üretilmesiyle sonuçlanabilir.
İkinci adım: kullanılmayan küçük resimleri temizleyin. wp media regenerate komutu yalnızca yeniden üretme yapar; aktif olmayan boyutların eski dosyalarını silmek için Force Regenerate Thumbnails gibi araçlar kullanılabilir. Bunlar önce mevcut küçük resimleri siler, ardından sadece kayıtlı boyutları yeniden üretir. Toplu görsel işleme akışı kurmak, bu tür yeniden üretme süreçlerini daha yönetilebilir hâle getirir.
Üçüncü adım: sahipsiz dosyaları inceleyin ve silin. Bu aşamada toplu silme yerine önce listeyi gözden geçirin. Özellikle birkaç yıldan eski kütüphanelerde, WordPress dışından referans verilen görseller bulunabilir.
Dördüncü adım: kırık veritabanı kayıtlarını temizleyin. wp-admin ekranındaki medya listesi üzerinde kırık eklentileri filtreleyin ve silin. WP-CLI ile toplu temizlik başlatılabilir; ancak komutu çalıştırmadan önce çıktıyı --dry-run parametresiyle test etmek yerinde olur. Her adım arasında kritik sayfaların düzgün yüklendiğini kontrol etmek, süreci güvenli tutar.
Aynı sorunun tekrar etmemesi
Temizlik tamamlandıktan sonra kütüphanenin yeniden şişmemesi için bazı önlemler almak gerekir. Bunların büyük kısmı teknik değil, iş akışı düzenlemesidir.
Görsel yükleme öncesinde medya kütüphanesinde arama yapmayı alışkanlık hâline getirmek, kopya yükleme sorununu büyük ölçüde çözer. Aramanın kullanılmaması çoğunlukla zaman baskısından kaynaklanır; görsellerin klasörler veya etiketler aracılığıyla düzenlenmesi, aramayı hızlandırır ve gereksiz yükleme isteğini azaltır.
Yeni bir eklenti veya tema kurmadan önce hangi boyutları tanımladığını kontrol etmek, beklenmedik küçük resim birikimini önler. Kullanılmayan eklentiler aktif kaldığı sürece boyut kayıtları da sistemde kalmaya devam eder. Görsel sürümleme ve eski dosyaların yönetimi, bu tür birikimin önüne geçmek için tamamlayıcı bir perspektif sunar.
Büyük kütüphanelerde periyodik denetim yapmak da işe yarar. Yılda bir kez uploads klasörünün toplam boyutunu, veritabanı kayıt sayısını ve aktif olmayan eklenti boyutlarını gözden geçirmek, küçük birikimi erken aşamada fark etmeye yardımcı olur.
Medya kütüphanesi temizliği bir kerelik operasyon değildir; site yaşadığı sürece bakım gerektiren, sürüm geçişlerinde ve eklenti değişikliklerinde yeniden gözden geçirilmesi gereken bir süreçtir. Yıllarca birikmiş şişkinliği tek bir oturumda çözmek mümkündür, ama bunun kalıcı kalması akış düzenine bağlıdır.
Temizleme araçları ve WP-CLI komutları işin teknik yüzünü kolaylaştırır; ama hangi dosyanın silineceğine, hangisinin tutulacağına karar vermek hâlâ insan gözü gerektirir. Otomasyona teslim etmeden önce her adımın ne yaptığını anlamak, sonradan düzeltmek zorunda kalınacak hataları baştan engeller.