27 Aralık 2025 - muzibu.com
Thumbmaker, sitedeki görselleri otomatik olarak boyutlandıran ve optimize eden bir sistem. Örneğin 5MB'lık bir albüm kapağını 50KB'lık küçük bir kare haline getiriyor.
Her görsel için 500-1700ms bekleniyor. Bir sayfada 20 görsel varsa, toplamda 10-30 saniye sadece görsel yüklemek için harcanıyor.
Görseller bir kez işlendikten sonra cache'den 5ms'de gelmeli. Bu şekilde sayfa yüklemesi çok hızlanır.
/thumbmaker?src=...&w=...&h=.../storage/tenant1001/thumbmaker/HASH.webp/storage/tenant1001/app/public/thumbmaker-cache/
helpers.php ve MediaHelper.php'de aynı isimde iki farklı fonksiyon var. Hangisinin yüklendiği load sırasına bağlı.
/thumbmaker?... URL'si her zaman Laravel'e gidiyor.
Cache dosyası olsa bile PHP başlatılıyor, middleware çalışıyor.
Cache-Control header'ı var ama browser tam sayfa yenilemede (Ctrl+F5) cache'i atlıyor.
ThumbmakerController kaynak görsele erişemiyor. src=https://muzibu.com/storage/...
URL'si çözümlenemiyor.
helpers.php'deki thumb() fonksiyonunu kaldır, MediaHelper.php'deki kullanılsın. Bu fonksiyon cache varsa direkt static URL döndürüyor.
Eğer /thumbmaker URL'si kullanılmaya devam edecekse, cache varsa 301 redirect yapsın. Browser bu redirect'i cache'ler.
/thumbmaker URL'leri için Nginx proxy cache ekle. Aynı URL tekrar geldiğinde PHP'ye gitmeden cache'den dönsün.
Sayfada görünmeyen görseller için istek atma. Kullanıcı scroll ettikçe yükle. Bu sayede ilk yükleme hızlanır.
| Senaryo | Şu An | Çözüm Sonrası | Kazanç |
|---|---|---|---|
| Tek görsel (cache'li) | 500-1700ms | 5-10ms | 100-300x |
| Anasayfa (20 görsel) | 10-30 saniye | 100-200ms | 100-150x |
| İlk yükleme (cache yok) | 500-1700ms | 500-1700ms | Değişmez |
En az değişiklik, en çok kazanç için Öneri 1'i uygulayalım:
thumb() fonksiyonunu kaldır veya yeniden adlandır