XenTR | XenForo Add-ons and Styles

XenTR
XenTR
Merhaba;

XenForo için farklı yaklaşımları ve bu konudaki öğrenme ve geliştirme çabalarını her zaman desteklemişimdir. Kodlarınızı üşenmedim inceledim. Bunun içinde size aşağıda bazı teknik...
Merhaba;

XenForo için farklı yaklaşımları ve bu konudaki öğrenme ve geliştirme çabalarını her zaman desteklemişimdir. Kodlarınızı üşenmedim inceledim. Bunun içinde size aşağıda bazı teknik terimler ile bilgi vermek istedim.

Bir XenForo Geliştiricisi gözüyle bu kodu incelediğimde, bu yapının canlı bir forumda kullanılmasının sistemi çökertebilecek, performansı yerle bir edecek ve ileride çözülmesi imkansız bug'lara yol açabilecek ciddi mimari hatalar barındırdığını söylemeliyim.

XenForo, performans odaklı ve yüksek trafikli siteler için tasarlanmış devasa bir framework'tür. Bu tarz bir yaklaşımın dezavantajlarını ve XF mimarisine göre işin doğrusunu aşağıda detaylıca açıklıyorum.

Mevcut Kodunuzun XenForo Açısından Dezavantajları ve Kritik Hatalar
1. Performans Katliamı olarak görebiliriz. buildRouteUrl metodu, XenForo'da bir sayfa yüklenirken ekrana basılan her bir link için tekrar tekrar çalışır. Bir ana sayfada 50 konu, 100 kullanıcı profili linki varsa, bu fonksiyon saniyede yüzlerce kez tetiklenir.
  • Kodunuzda her üye linki oluşturulurken instanceof \XF\Entity\User kontrolü yapılıyor, kullanıcının ikincil grupları (secondary_group_ids) virgülle ayrılıp (explode) dizi birleştirme (array_merge) yapılıyor.
  • Üstüne karmaşık Regular Expression (preg_replace) işlemleri uygulanıyor. Bu durum sayfa yüklenme sürelerinizi korkunç derecede uzatacaktır. XenForo, bu tür string işlemlerini minimumda tutmak için linkleri çok daha basit (regex )olmadan oluşturur.
2. DDoS ve Yük Riski
XenForo'da routeToController sisteme gelen her isteğin (URL'in) nereye gideceğine karar veren kapıdır.
PHP:
Dear Guests, welcome! Please, Log in or Register to view hide content!
Bu kod parçası, eşleşmeyen herhangi bir URL geldiğinde (örneğin 404 sayfaları, silinmiş eski linkler, botların taradığı rastgele URL'ler) doğrudan veritabanına SELECT sorgusu atıyor. Kötü niyetli biri veya bir bot saniyede 1000 tane rastgele URL (örn: site.com/asdasdasd) çağırdığında, siteniz saniyede 1000 adet veritabanı sorgusu yapmaya çalışacak ve MySQL saniyeler içinde kilitlenecektir. Routing katmanında (çok zaruri kalmadıkça) veritabanı sorgusu yapılmaz.
3. Hardcoded (Gömmeli) Rota Listesi

Sistemin diğer sayfalarının etkilenmemesi için login, register gibi onlarca rotayı bir diziye manuel yazmışsınız. XenForo'nun mimarisi dinamiktir. Yarın sisteme XenForo Resource Manager (xfrm) veya Media Gallery (xfmg) kurduğunuzda, ya da herhangi bir eklenti (örn: shop/) kurduğunuzda, bu rotalar sizin $corePrefixes dizinizde olmadığı için eklentiniz bunları Konu (Thread) sanıp yönlendirmeye çalışacak ve tüm eklentileriniz kırılacaktır.

XenForo Mimarisine Göre Nasıl Olmalı?
Sizin yapmak istediğiniz URL estetiği işlemi, XenForo'nun çekirdek yapısını "hackleyerek" (regex ile araya girerek) değil, XenForo'nun sunduğu yönlendirme (Routing) araçlarıyla yapılmalıdır.

1. Prefixleri
XenForo admin panelinde Setup > Route filters (Rota Filtreleri) adında muazzam bir özellik vardır.
  • /threads/ prefixini tamamen gizlemek XF mimarisinde önerilmez (diğer rotalarla çakışma yaratır), ancak illa değişecekse Rota Filtreleri kısmından threads/ rotası konu/ veya c/ gibi çok kısa bir yapıya kod yazmadan çevrilebilir.
  • Prefixi tamamen kaldırmak XenForo'nun Rota Çözücü (Route Matcher) yapısını bozar ve performans kaybı yaratır.

Sonuç olarak; bu eklenti her sayfa yüklemesinde gereksiz sorgular ve karmaşık metin işlemleri yaparak sitenizin performansını ciddi şekilde düşüreceği ve ileride eklenti çakışmalarına (çökmelere) yol açacağı için kesinlikle kullanılmamalıdır. Bu tarz URL değişiklikleri kod yazarak değil, XenForo'nun kendi içindeki "Route Filters" (Rota Filtreleri) özelliği kullanılarak, mimariye uygun ve performans kaybı yaşanmadan yapılmalıdır.
Back
Top Bottom