Autoload: birlikte yüklenen opsiyonları ölçme ve değiştirme
Burada aslında ne ölçülüyor
WordPress her tek çağrıda — ana sayfa, görsel, REST çağrısı — autoload sütunu ayarlanmış tüm seçenekleri tek bir sorguda okur. Yani bu satırlar bir kez değil, her seferinde zaman harcar. Sütunun hangi değerlerinin “yüklenir” sayıldığını Kakapo doğrudan WordPress'e sorar (wp_autoload_values_to_autoload, 6.6'dan itibaren, filtresiyle birlikte); daha eski kurulumlarda yes, on, auto-on, auto listesi geçerlidir. Ardından her değerin uzunluğu PHP'de, yani gerçek bayt olarak sayılır. SQL'deki LENGTH() daha hızlı olurdu, ancak sürücüye göre bayt yerine karakter sayar — SQLite altında özel harflerde ve emojilerde arayüzde yanlış sayılar görünürdü. Okuma 100 satırlık adımlarla ve her çalışmada en fazla 20.000 satır olacak şekilde yapılır; bu üst sınıra ulaşılırsa arayüz bunu söyler ve sayıları açıkça alt sınır olarak işaretler. Ölçüm yalnızca bölüm açıldığında ya da “Yeniden ölç” ile çalışır — asla bir ziyaretçinin sayfa oluşturma sürecinde değil — ve sonrasında 300 saniye geçerlidir.
Dört göstergeyi doğru okuma
Üstte dört sayı yer alır. “Her çağrıda yüklenen”, toplam boyutu, seçenek sayısını ve ölçümün süresini belirtir. “Uyarı eşiğine oranı” bunu 800.000 bayta karşı hesaplar — WordPress çekirdeğinin “Web sitesi durumu” kontrolüyle tam olarak aynı eşik, filtresi de dahil; bir kurulumda iki farklı uyarı sınırı yalnızca kafa karıştırırdı. “Bunun değiştirilebilir kısmı”, etkin sahibi olmayan bölümdür, yani gerçekten elleyebileceğiniz şey. “Zaten değiştirilmiş”, yükleme sürecinden burada çoktan çıkardıklarınızı toplar. Bunun altında “Yük nereden geliyor” kartı aynı miktarı kaynağına göre ayrılmış olarak gösterir, ikinci kart ise en büyük 25 tekil kalemi.
Eşleştirme bir ad karşılaştırmasıdır, kanıt değil
options tablosunda “Sahip” diye bir sütun yoktur. Bu nedenle Kakapo, seçenek adını diskte gerçekten bulunanla karşılaştırır: kurulu her eklentinin dizin adı, ana betiğinin dosya adı ve metin alanı ile tüm temaların slug'ları. En uzun uyan ön ek kazanır; aksi hâlde “kakapowp”, “kakapowp_performance” karşısında kazanır ve yanlış eklenti gösterilirdi. Bir eklentinin seçenekleri için gerçekte neyi kullandığı hiçbir başlıkta yazmaz — “wpseo” gibi bir kısaltma “Yoast SEO”dan türetilemez. Bu tür durumlar “atama yok” kovasına düşer ve bu “bilmiyorum” demektir, “kimseye ait değil” demek değil. Bir ön eki kesin olarak biliyorsanız, onu kwpp_autoload_praefixe filtresi üzerinden sonradan eklersiniz; eklenti bunu kendi ön eki için de aynı şekilde yapar.
Neyin değiştirilebildiği — ve çoğunun neden kilitli kaldığı
“Değiştir” düğmesi yalnızca iki koşul aynı anda sağlandığında görünür: seçenek en az 1 KB büyüklüğündedir ve etkin hiçbir bileşene ait değildir. Böylece WordPress çekirdeğinin seçenekleri kilitli kalır (populate_options'tan gelen sabit liste ile theme_mods_*, widget_* ve *_user_roles desenleri — bunlara her çağrıda gerçekten ihtiyaç duyulur), ara bellekler kilitli kalır (transient'lerin yeri derin temizliktir; orada yalnızca daha geç yüklenmek yerine tümüyle kaybolurlar), etkin bir eklentiye ya da etkin temaya ait olan her şey ve 1 KB altındaki her şey kilitli kalır, çünkü orada ek tekil sorgu, kazanılan baytlardan daha pahalıya gelir. Fareyi soluk görünen bir düğmenin üzerine getirin: gerekçe not olarak orada yazar. Kazançlı durum neredeyse her zaman, satırları öylece kalmış olan pasif ya da çoktan kaldırılmış bir eklentidir. Geçerli lisans olmadan bu bölüm uyku durumundadır — ölçüm ve gösterim sürer, ancak hiçbir şey değiştirilmez.
Değiştirme, günlük, geri alma
Yazma işlemi çekirdeğin wp_set_option_autoload() işlevi üzerinden yapılır, kendi UPDATE'imizle değil: doğru ara bellekler ancak böyle sonradan temizlenir, aksi hâlde harici bir nesne cache eski durumu vermeye devam ederdi. Bu işlevin bulunmadığı kurulumlarda Kakapo değeri “no” yapar ve alloptions'ı, notoptions'ı ve tekil kaydın kendisini temizler. Yazmadan önce satır bir kez daha yeniden kontrol edilir: hâlâ var mı, gerçekten hâlâ “yüklenir” durumunda mı ve o anda ne kadar büyük — günlükte, yükleme sürecinden gerçekten neyin çıkarıldığı yazmalıdır. Veritabanı değişikliği uygulamazsa mesaj bunu açıkça söyler ve hiçbir şey değiştirilmemiştir. Günlük, eski sütun değeri, boyut, zaman ve kullanıcı adıyla birlikte 200 kayda kadar tutar. Geri alma tek tek ya da hepsi birden yapılabilir; geri yazılan değer “yüklenir” durumudur, çünkü WordPress'in ara değeri olan “auto”, çekirdek işlevi üzerinden geri getirilemez — özgün değer günlükte görünür kalır. Bir seçenek bu arada tümüyle kaybolmuşsa, örneğin eklenti kaldırıldığı için, Kakapo bunu bildirir ve “geri alındı” demek yerine konusuz kalan kaydı siler.