WP’nin Otomatik Yükleme Hikayesi seçeneği: WP_OPATIONS TEMİZLİK

Bugün ezoterik konuya dalmak istiyorum: WP seçeneği otomatik yükleme. Bu, birçok WordPress geliştiricisi tarafından sevilebilecek veya ihtiyaç duyabilecek bir şey değildir. Ancak bu konunun belirsiz bilgisi beni müşterinin projesindeki çok fazla zaman ve karışıklıktan kurtardı, bu yüzden otomatik yükleme WordPress seçenek özelliğini anlamadan güncelleme_option işlevinin olağan kullanımının nasıl hasta olmanıza neden olabileceğini anlamanıza yardımcı olmak istiyorum. acıtmak. WP seçeneğinin kısa bir özeti, otomatik yükleme ve temizlik hikayeme dalmadan önce, hikayeme daha makul yardımcı olmak için bazı tanımlar sunmak istiyorum:
WP_OPtions, WordPress veritabanındaki bir tablo. Genel olarak, WordPress geliştiricileri, daha fazla ayrıntı eklemeden burada depolanan değeri “seçenek” olarak adlandıracaktır. Bu “Seçenek”, eklentilerin veya temaların, kullanıcılar tarafından işlevleri hakkında kontrol edilebilecek ayarları depolaması içindir. Dolayısıyla, E-Niaga mağaza adresinizi depolama olanağınız varsa, adres genellikle WP_Opations tablosunda bir satırda saklanır.
Update_option, seçenekleri yönetmek ve güncellemek için en yaygın kullanılan WordPress işlevidir. Bunun kullanımı nispeten kolaydır: seçeneğiniz için bir ad verin ve ardından WordPress tarafından saklanmak istediğiniz değer.
Bu hikaye ile kesişen “geçici”, ancak WP seçeneğini temizlemek amacıyla ortak sorun, birkaç WordPress sitesindeki seçenek tablosunda kısa süreli bir değerdir. Geçici, WordPress’in daha eksiksiz bir “önbellek nesnesi” olmadığında kullanılır.
“Nesne önbelleğe alınması”, WordPress’in ara verileri, Redis veya Memcache (D) gibi belleğinizde veri depolamasında veya geçici WordPress’te depolamalarıdır. Bu, sonuçları, örneğin pahalı bir veritabanı sorgusunu saklayarak iyileştirir, böylece WordPress’in herhangi bir zamanda tam bir yeniden hesaplama yapması gerekmez. WordPress OPSI “Autoload. Adından beklediğiniz gibi, bu, WordPress’in her zaman ve tüm sayfa yüklemesinde sizin için bu seçeneği içerecek şekilde istisnasız olacağı anlamına gelir. Bunun neden ve ne zaman hikayemde tartışacağımız bir şey olmasını istemeyebilirsiniz.
get_option, WP_Opations tablosunda depolanan seçenekleri almak için en yaygın kullanılan WordPress işlevidir. Bu işlevin ana yararı, özellikle otomatik olarak yüklenen seçenekler için yeni bir veritabanı sorgusu oluşturmak yerine değer önbellek nesnelerini kullanabilmektir.
Kafalarımızdaki tüm bu gerçeklerle, hikayemi anlatmanın zamanı geldi. Tüm gerçekler tam olarak alınmazsa çok fazla endişelenmeyin, alakalı hale geldiğinde bu ayrıntının önemli yönlerini tartışacağız.
WP Option Autoload hakkındaki hikayem, büyük bir WordPress sitesi ile bir müşterim (burada bahsetmeyeceğim) var. Yıllarca olmasa da, sitelerinde aylarca bazı küçük performans sorunları var. Çok fazla trafik alırlar ve çok fazla içerikle büyük sitelerinin hala çalışmasını sağlamak için web barındırma için çok fazla ödeme yaparlar.
WordPress siteleri oldukça eski ve aynı zamanda garip. Özel Python CMS kullanarak hayata başlayan ve daha sonra Python geliştiricisinden (az ya da çok) WordPress sitesini uyandırmasını isteyen yayınlardır. İlk WordPress sitesi Python geliştiricileri, WordPress geliştirme normlarına kıyasla en azından bir dizi nadir seçenek sunacaklar. Bu nedenle tüm işlevleri WordPress temasına koyarlar. (Yıllar önce “sürünen bir tema” olarak yazdığım çok yaygın bir sorun) Laravel bıçak şablon sistemini kullanan temalar ve daha da önemlisi, site için başka birçok işlevi var: reklam karar seçenekleri, AMP kodu desteğinin çoğu ve işlevsel göç. Geçiş işlevselliği, eski özel şeylerinin sitesini WordPress’e taşımak için kullandıkları koddur. Bu sitenin sorununu asla bu kadar hızlı buluruz. Bu binlerce makaleye sahip büyük bir site. WordPress’in yeteneğinin kenarında olmasa da, bazen ona yakın hissediyor.

Ve son aylarda daha kötü davranmaya başladığını fark ettiler. Rastgele bir 502 hatası ve sadece genel bir yavaşlama var. Bir takım arkadaşı, garip bir tavsiye öneren barındırma desteği ile iletişime geçti: nesne önbelleğini devre dışı bırakır. Unutmayın: Önbellek nesnesi, genel veritabanı sorguları gibi WordPress aracılarını depolamak ve ayrıca otomatik yük seçenekleri WP’yi ayarlamak için bellekte bir önbellek katmanı (genellikle memcached’den redis) kullanmak için WordPress’in adıdır. Bu genellikle işleri daha hızlı yapar. Ama gerçekten de, onu kapatmak yardımcı görünüyordu. Ama neden? Neden WordPress’i hızlandırması gereken özellikleri kapatıyorsunuz?
Olduğu şey, ana bilgisayar nesnesi önbelleğe alınması (makul performans nedenleriyle) 1MB’den fazla ölçüm “nesneleri” reddetmesidir. Ve bu web sitesi, önbellek olmak için çok önemli olan nesnenin 1.1MB boyutuna sahip olduğu sınırı geçti. Dosya boyutları hakkında konuşmayanlar için, metin dizeleri genellikle birkaç düzine bayttır. 1000 (veya 1024) bayt kilobayt veya KB’dir. 1000 (veya 1024) kilobayt megabayt veya MB’dir. Yani yeterince büyük bir şey var. WordPress, otomatik olarak yüklenecek şekilde ayarlanmış tüm WP opsiyonlarını temsil eden bir nesne oluşturur, ardından nesne önbellek katmanına itmeye çalışır. Bir nesne-öğrenme katmanı nesneyi reddedeceğinde, WordPress bu değeri yeniden hesaplar. Söz konusu değer: Tüm site için otomatik olarak yüklenen seçeneklerin bir koleksiyonu. Yani, sayfa yükleme başına bir kez aramak yerine, WordPress onu arıyor ve iki kez yüklüyor. Ve tartıştığımız gibi, bu da patolojik.
Destek ekibi küçük bir veritabanı sorgusu ile WP_Opsions tablomuza baktığında ortaya çıkan belirli geçiş kodu ortaya çıktı: uzunluk (option_value), wp_opsions’dan option_name, burada autoload = ‘evet’ sipariş (option_value) desc limit 20; SQL sözdizimi ayrıntıları çok önemli değildir. Yaptığı şey, WP_Opations tablosunda Autoload’a ayarlanmış en uzun değeri (en büyük boyutu) bulmaktı. Kafa karıştırıcı ve net bulduğumuz şey. WordPress veritabanımızda yaklaşık 900KB olan otomatik yüklü bir seçeneğimiz var. Bu video dosyasının fotoğrafları için büyük değil. Metin veya basit veritabanı değeri için çok kafa karıştırıcıdır.

Bu yüzden bu tek patolojik değerin ne olduğunu araştırıyorum. Sınıfları dolduran bir kod buldum: yıllar önce site verilerini taşımak için oluşturulan WordPress temasında bir işlev. Dahası, bu kod hakkında aralıklı olarak yürümesine neden olan ve site daha uzun yaşadığında WP_OPtion değerinin boyutunu sürekli artıran bir şey var. Büyümenin kesin nedeni belirsizdir ve hala belirsizdir. (Bu tarihi ve “teknik borç” temalarıyla dolu aylarca planladık, bu yüzden mantıklı geliyor bizim için küçük bir işletme değeri.) Çözüm: Bu patolojik seçenek için otomatik yükü kapatın Bu kodu keşfetmek için sadece bu kodu keşfediyorum Bir şey: Sitenin normal işlevi için çok yararlı bir şey yapmaz. Dahası, güncellenen seçenek ek atık verileriyle doldurulmuştur. Yani, yararlı verileri depolamak yerine, depolanan her şey düzenli olarak yeni bir boş anahtar çifti ekleyen bir PHP dizisidir. Anlamı: işe yaramaz atık. Bu nedenle çözüm oldukça basit: sadece WP_OPSISSISSISSPress veritabanı tablosundaki satırın bu çok büyük değer için otomatik yük için “evet” değeri yok.

WP_opsions tablosunu temizlemek için yapılan şey, site için nesne önbelleğini yeniden etkinleştirebilmemiz ve istenen performans iyileştirmesini elde edebilmemiz için bunu yapmaktır. Yani bu kazan-kazan: Sitenin daha az önbellek sorunu var. Ve problemden kurtulmak, önbelleğin daha hızlı olacağı anlamına gelir. Bu ders bana şimdi fark etmiş olabileceğiniz şeyleri ifade etmek için WP seçeneğini temizlemeyi öğretti, bu WP opsiyonlarını temizlemek için kesin bir rehber değil. WP Seçenekleri Temizliği için eksiksiz bir rehber arıyorsanız, Kinsta’dan gelen bu gönderiye bakın. Bunun yerine, WPPress ve Automaad değerlerinin performansının beni nasıl şaşırttığını düşündüğümle ilgili hikayeleri paylaşıyorum, bir günün yardımcı olabileceği umuduyla sen. WordPress seçeneğini yönetme hakkında bana öğretilen bu özel dersi vurgulamak istiyorum:

Seçiminizi küçük tutun. Bu genel bir uygulamadır. Ancak WordPress veritabanında seri diziyi birkaç bin anahtarla görmek beni WP-Options tabloınızda basit ve küçük bir veri toplama kullanmanın önemi konusunda gerçekten ikna etti.
Update_option adresini çağırırken Autoload hakkında eleştirel düşünün. Anlamı, nadiren kullanılan bir seçeneğiniz olduğunda (WordPress sitenizde sadece sayfa 1-1-20’nin yüklenmesinde gerçekten görünür olan bir şey deyin), otomatik olarak yüklenmemiştir. Update_option (‘my_option’, ‘değer’) değiştirerek bunu oldukça basit yapacaksınız; Update_option (‘my_option’, ‘değer’, ‘hayır’); . (Üçüncü $ AutoLoad parametresinin değerini belirlemiyorsanız, update_option varsayılan olarak ‘evet’ olarak.) Geçiş eklentisini bir temaya yerleştirmeyin. WordPress temasına geçiş kodunu ekleyin “WordPress teması crept” ile ne demek istediğimin doğru tanımıdır. Geçişi bitirdikten hemen sonra devre dışı bıraktığınız ve sildiğiniz eklentiye kodu girin. Hiçbir şey yapmamanız gerektiğinde kurtarmaya, her zaman yürümeye gerek yok. (Ve bir şeyler yapmak üç yıl içinde site yöneticisini şaşırtacak ve karıştıracaktır.)

admin

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir