WordPress'te Geçici Durumlar İçin Bir Kılavuz
Yayınlanan: 2023-02-12Bir WordPress geliştiricisi olarak, başarılı bir web sitesi için performansın ne kadar önemli olduğunu muhtemelen zaten biliyorsunuzdur. Ancak, WordPress'teki geçici olayları ve bunların projelerinizi optimize etmenize nasıl yardımcı olacağını anlamak biraz zor olabilir.
Neyse ki, onları parçaladığınızda, geçici olayları anlamak o kadar da zor değil. Birkaç temel yönergeyi aklınızda tuttuğunuz sürece, bunları bir sonraki WordPress eklentinize dahil etme yolunda olmalısınız.
Bu gönderide, geçici WordPress geçişlerinin ne olduğu ve bunların nasıl ve ne zaman kullanılacağı hakkında bir genel bakış sunacağız. Ele alınacak çok yer var, o yüzden hemen konuya girelim!
WordPress Geçişleri Nelerdir?
Geçici olayları anlamak için önbelleğe alma ve Uygulama Programlama Arayüzleri (API'ler) hakkında bazı temel bilgilere sahip olmak yararlıdır.
Web sayfası verilerini önbelleğe almak, temelde bir web sitesinin verilerini geçici olarak kaydetmenin bir yoludur, böylece aynı veriler için birden çok istek varsa sitenin MySQL veya PHP'yi yeniden çalıştırması gerekmez. Bu, saniyeler içinde zaman kazandırabilir ve sunucu yükünü azaltabilir.
Fikir, verileri geçici olarak tutmaktır, bu nedenle "geçici" kelimesi. Geçici İşlemler API'si, WordPress Seçenekleri API'sine benzer. Verilere bir ad ve bir değer verirsiniz - ki bu, çok düzeyli bir PHP dizisi gibi karmaşık olabilir - ve verileri depolar. Daha sonra, belki farklı bir talepte bile, bu veriyi ismini kullanarak alabilirsiniz. Aradaki fark, Seçenekler tablosundaki verilerin sonsuza kadar sabit kalmasıdır. Yani, verileri depolayabilirsiniz ve üç yıl sonra hala orada olacaktır.
Her geçici olay üç bölümden oluşur:
- $geçici. Bu, geçici durumunuzu tanımlamak ve onu çağırmak için kullanılan dizedir. Aynı zamanda geçicinin 'anahtarı' veya 'adı' olarak da adlandırılır.
- $ değeri. Bu, bir API aracılığıyla alınan bilgidir. Bir geçişin değeri bir nesne, bir dizi, bir sayı veya bir dize olabilir.
- $ sona erme. Bu, bir geçişin silinmeden önce veritabanınızda kaldığı ve API aracılığıyla ihtiyacınız olan bilgilere yeniden erişmeniz gereken süredir.
Görünüşte, WordPress geçişlerinde olan tek şey bu. Ancak, bunları doğru şekilde kullanmak için bilmeniz gereken daha çok şey var.
Bununla birlikte, geçici veriler ortalıkta dolaşmayacaktır. mesele bu! Verileri isteyebilir ve eksik olduğunu iki yoldan biriyle bulabilirsiniz. İlk olarak, verileri sakladığınızda , bir son kullanma tarihi belirtirsiniz. Örneğin, “bunu üç saat sakla” diyebilirsiniz. Yani dört saat sonra talep ederseniz eksik olacaktır.
İkinci yol, bu veri parçasının herhangi bir zamanda herhangi bir nedenle ortadan kaybolmasına izin verilmesidir. Kulağa tuhaf geliyor biliyorum! Güvenemeyeceksen verileri saklamanın ne anlamı var? Buradaki nokta, depolamanın WordPress'in yerine getirmeye çalışacağı bir istek olmasıdır, ancak bu esneklik nedeniyle, geçici depolama için farklı türde uygulamalar kullanmak mümkündür ve bu, geçişleri son derece verimli hale getirmek için farklı, gelişmiş teknolojilerin kullanılmasının mümkün olduğu anlamına gelir. ve çok sunuculu kümelenmiş bir ortamda bile düzgün şekilde çalışır.
Bu "her an yok olma" olayı nedeniyle, genellikle önbellek için geçici olayları kullanırsınız. Diğer bir deyişle, yavaş bir MySQL sorgusu gibi gerçek zamanlı bir şeyi hesaplamanız veya birinin Twitter veya RSS beslemesi gibi harici bir kaynaktan veri almanız gerekiyorsa, hesaplanan verileri kaybolacağını bilerek bir geçici durumda saklayabilirsiniz. onu yeniden yaratmak her zaman mümkündür. Ancak olağan durumda - kaybolmadığında - verileri yeniden hesaplamak zorunda kalmadan hızlı bir şekilde alırsınız.
Geçici Durumları WordPress Sitenizde Kullanmanın Faydaları
Daha önce de belirttiğimiz gibi, geçici olayların birincil faydası, web sitesi performansını iyileştirmeleridir. Örnek olarak Google Site Kit eklentisini kullanarak, bunun nasıl çalıştığının kabaca bir taslağını burada bulabilirsiniz.
Eklenti etkinleştirildiğinde, WordPress kontrol panelinde Analytics ve Search Console gibi platformlardan gelen verileri görüntülemek için bir API kullanır. Geçici durumlar olmadan, Site Kit kontrol panelinizi her görüntülediğinizde WordPress'in bu bilgileri her bir araçtan alması gerekir:
Bunun yerine Site Kit, Analytics ve Search Console'dan verileri önbelleğe alan geçici olayları içerir. Bir gün (ya da platform hiçbir veri döndürmezse bir saat) boyunca saklanırlar.
Site Kit kontrol panelinize her eriştiğinizde WordPress, API'yi tekrar aramak zorunda kalmadan depolanan bilgileri veritabanınızdan hızlı bir şekilde alabilir. Süre dolduğunda eski veriler silinir.
Bu, sonuçlarınızın her seferinde yüklenmesini beklemeniz gerekmediği anlamına gelir. Bu, gönderileriniz için sosyal medya paylaşım sayılarını göstermek veya bir haber akışını görüntülemek gibi çeşitli durumlarda kullanışlıdır.
Geçici Durumları WordPress Sitenizde Kullanmanın Dezavantajları
Geçici olaylarla başınızı belaya sokan şey, eklentiniz/temanız farklı geçici uygulamalar altında çalışırken aldığınız farklı ve yeniden üretilmesi zor davranışlardır. Farklı geçici uygulamalar, YALNIZCA belirli site türlerinde belirli yapılandırmalarda sorunla karşılaşacağınız ve diğerlerinde asla sorun yaşamayacağınız anlamına gelir. Bir geliştirici olarak, bu tuzağın farkında değilseniz ve buna göre kodlama yapmıyorsanız, kodunuzun sağlam olduğunu düşünürsünüz, ancak aslında sahada bozulur ve nasıl yeniden üreteceğinizi bile bilmezsiniz. !
WordPress Geçişleri Ne Zaman Kullanılır?
Geçici olaylar, geçerlilik sürelerinin sonuna ulaştıklarında veritabanınızdan silinir. Bu nedenle, bunları yalnızca sürekli olarak yeniden oluşturulan bilgiler için kullanmak istersiniz.
Ek olarak, projenizin performansını iyileştirebilseler de, geçici durumlar en iyi şekilde büyük sorgular ve uzaktan çağrılar için ayrılmıştır. Bir geçiş oluşturmak için, her ihtiyaç duyulduğunda kaynak için yeni bir istek yapmaktan daha fazla kod gerektirecekse, bu olmadan devam etmeniz daha iyi olur.
WordPress Geçişlerini Yönetme
Şu anda WordPress sitenizde çalışmakta olan geçici olayları kolayca görmek ve yönetmek istiyorsanız, Geçici Durum Yöneticisi eklentisini yükleyebilirsiniz:
Araçlar > Geçici Olaylar'a giderek bulabileceğiniz geçici olayların tam bir listesini sağlar:
Burada, daha önce listelediğimiz üç geçici öğeyi de görebilirsiniz - anahtar (ad), değer ve sona erme süresi. Düzenle bağlantısına tıklayarak bu özelliklerden herhangi birini düzenleyebilirsiniz:
Geçici olayları tek tek veya toplu olarak da silebilirsiniz.
Geçici Durumlarda Kullanılan Temel İşlemler
Kendi geçişlerinizi kodlamaya gelince, muhtemelen kullanmanız gerekecek üç temel işlem vardır. Site Kit'i örnek olarak kullanmaya devam ederek aşağıda her birini özetledik.
1. Geçişleri Ayarlama
Geçici olayların oluşturulması veya 'ayarlanması', anahtarın, değerin ve sona erme süresinin tanımlanması ve bu bilgilerin ilgili verilere uygulanması sürecidir. Bunu yapmak için aşağıdaki biçimi kullanacaksınız:
Set_transient ('key', $value, expiration_period)
Analitik verilerini depolayan geçici durumu ayarlamak için Google Site Kit'te kullanılan kod aşağıdadır:
// Cache "data found" status for one day, "no data" status for one hour. set_transient( $transient_key, (int) $has_data, $has_data ? DAY_IN_SECONDS : HOUR_IN_SECONDS ); } return (bool) $has_data; } }
Geçici anahtar googlesitekit_analytics_has_data'dır (kodda daha önce tanımlanmıştır), değer $has_data veya $has_data ? ve sona erme süresi bir gün veya bir saattir (değere bağlı olarak).

2. Geçici Olayları Alma
Geçici olayları almak biraz daha karmaşıktır. Öncelikle, gerekli verileri istemek için bir işlev kullanmanız gerekir. Ardından, yeni bir API isteği yapmak yerine, yüklenmesi gereken karşılık gelen bir geçiş olup olmadığını kontrol edeceksiniz.
Sonuç şöyle görünebilir:
function some_function(){ $transient = get_transient('key');
Ardından, geçici olanı döndürmeniz veya süresi dolmuş verileri silmeniz ve kaynağa yeni bir çağrı yapmanız gerekir. Son olarak, yeni verileri döndürdükten sonra geçici durumu ayarlamanız gerekir, böylece süre dolana kadar veriler tekrar saklanır.
Google Site Kit'te şuna benzer:
/** * Checks whether Analytics data exists for the given URL. * * @since 1.4.0 * * @param string $url The url to check data for. * @return bool */ protected function has_data_for_url( $url ) { if ( ! $url ) { return false; } $transient_key = 'googlesitekit_analytics_has_data_' . md5( $url ); $has_data = get_transient( $transient_key ); if ( false === $has_data ) { /* @var Google_Service_AnalyticsReporting_Report[]|WP_Error $reports Array of reporting report instances. */ $reports = $this->get_data( 'report', array( 'url' => $url, 'metrics' => array( array( 'expression' => 'ga:users' ), array( 'expression' => 'ga:sessions' ), ), ) ); if ( is_wp_error( $reports ) ) { $reports = array(); // Bypass data check and cache. } foreach ( $reports as $report ) { /* @var Google_Service_AnalyticsReporting_Report $report Report instance. */ $report_data = $report->getData(); /* @var Google_Service_AnalyticsReporting_ReportData $report_data Report data instance. */ foreach ( $report_data->getTotals() as $date_range_values ) { /* @var Google_Service_AnalyticsReporting_DateRangeValues $date_range_values Values instance. */ if ( isset( $date_range_values[0], $date_range_values[1] ) && ( 0 < $date_range_values[0] || 0 < $date_range_values[1] ) ) { $has_data = true; break 2; } } }
Bu kodun ardından, geçici olayları ayarlamak için önceki bölümde eklediğimiz snippet gelmelidir.
3. Geçici Olayları Silme
Bazı durumlarda, bir geçici durumu kaldırmak isteyebilirsiniz. Örneğin, Google Site Kit'te her zaman en güncel analizleri görmek istiyorsanız, verileri önbelleğe almamak daha iyi olur (gerçi Site Kit'in geçici olaylarını gerçekten silmenizi önermiyoruz).
Aksi takdirde, yeni ziyaretçileriniz olsa bile eklenti gün boyunca aynı sonuçları gösterecektir. Geçici durum 24 saat sürdüğü için, öğleden sonra görüntülediğiniz veriler, sabah yüklediğiniz verilerin önbelleğe alınmış bir sürümü olacaktır.
Geçici olayları silmenin en kolay yolu, Geçici Durum Yöneticisi eklentisini kullanmaktır. Ancak, bunun yerine kod kullanmak istiyorsanız, kullanmak için delete_transient() işlevini koyabilirsiniz. Tek ihtiyacınız olan geçici anahtar:
delete_transient('key');
Ancak, silmek istediğiniz her geçici olay için bunu tekrarlamanız gerekecek.
Geçici Süre Sonu: Nasıl Çalışır?
Geçici sona erme süreleri birkaç farklı şekilde ifade edilebilir. En basit iki seçenek:
- Saniye cinsinden ( set_transient('key', $value, 86400))
- WordPress Zaman Sabitlerini Kullanma ( set_transient('key', $value, DAY_IN_SECONDS))
Alternatif olarak, süresi dolmayan geçişleri de ayarlayabilirsiniz. Bu, önbelleğe alınan bilgileri manuel olarak silip sıfırlayana kadar geçici verileri aynı tutmak istediğiniz durumlarda yararlı olabilir.
Süresi dolmayan geçişler oluşturmak oldukça basittir. set_transient işlevindeki süre sonu parametresini boş bırakın veya sıfır olarak tanımlayın.
WordPress Geçici İşlemler API'sini Anlamak
WordPress Transients API, basitçe, bilgilerin sitenizin veritabanında önbelleğe alınmasını sağlayan araçtır. Geçici olayları ayarlama, alma ve silme dahil, bu gönderi boyunca tartıştığımız tüm ilgili işlemleri etkinleştirir.
Başka bir deyişle, Geçici İşlemler API'si, WordPress'in çekirdeğinin geçici olayları kullanmanıza izin veren kısmıdır.
Transient API arka ucunun en yaygın iki uygulaması:
- WordPress'te yerleşik olan ve bu nedenle açık ara en yaygın olanıdır. Geçici değerler, tıpkı normal seçenekler gibi wp_options tablosunda saklanır. Geçici olaylarda, son kullanma tarihini tutmak için ek bir seçenek saklanır. Bir geçici erişime erişildiğinde, WordPress önce son kullanma tarihini alır. Süresi dolmuşsa, WordPress her iki seçeneği de tablodan siler, böylece verileri “temizler” ve verilerin hiç orada olmadığını varsayar. Süresi dolmamışsa, içeriği seçenekler tablosundan alır.
- Memcached. Memcached, Transients API'sinin tam olarak yapması gereken şeyi yapmak için tasarlanmış çok basit ama verimli ve güvenilir bir sunucu tarafı yazılımıdır - belirli bir zamanda sona eren ve gerektiğinde herhangi bir zamanda kaybolabilecek bir anahtara dayalı verileri depolar. ile.
WordPress Transients yerine memcached kullanmanın iki özel avantajı vardır, bu yüzden WP Engine'de onu sizin için otomatik olarak önceden yapılandırıyoruz. Biz senin arkandayız
Ben. Memcached, değerleri depolama ve almada WordPress Transients'den 10x-100x daha hızlıdır, bu özellikle ilginçtir, çünkü geçici olayların amacı bir sitenin hızını artırmak için verileri önbelleğe almaktır.
ii. Memcached, verilerle kaplayacağı maksimum alan miktarını ayarlar (örn. 64MB RAM), yani bir site bir kerede çok fazla veri depolarsa, eski verileri otomatik olarak atar ve bu nedenle alan asla bitmez. Ancak yerleşik WordPress Geçici İşlemleri, seçenekler tablosunda isteğe bağlı miktarda veri depolar.
Gelişiminizde Geçişleri Uygulamak
Aynı Transient anahtarını art arda okuyup yazdığınızı ve bunun 1k veri olduğunu varsayalım. Bu durumda, hem Memcached hem de WordPress Transients tam olarak beklediğiniz şeyi yapacak ve her ikisi de yaklaşık 1k yer kaplayacak (seçenekler tablosunda veya memcached'de).
Şimdi, her tarayıcı oturumu için farklı olan, farklı Geçici anahtarlar okuyup yazdığınızı varsayalım. Kısacası, kullanıcı oturumu verilerini Geçici Durumlarda depoluyorsanız ne olur? Bu yüzeyde mantıklı. Oturum verileri sonsuza kadar sürmemeli ve özel veritabanı tablolarıyla uğraşmak istemezsiniz. Bunun yanı sıra, birçok WordPress Barındırma şirketi PHP oturumlarına izin vermiyor, bu yüzden bu gerçekten bir sonraki en iyi şey. Hatta hızlı ve çok sunuculu.
İşte farklılıklar burada ortaya çıkıyor. Memcached ile ve düşük trafiğe sahip bir sitede bu yöntem işe yarıyor gibi görünüyor. Değerler bir süre dayanır, ardından süreleri doldukça silinir. Ancak sunucu aşırı yüklüyse, sunucunun depolaması gereken oturum verisi miktarı memcached'deki kullanılabilir alanı aşacaktır ve bu nedenle oturum verilerini düşündüğünüzden daha erken kaybetmeye başlayacaksınız. Ve tam olarak bu ağır yüklü ortamda test yapmadıysanız, bunu asla bilemezsiniz. Genel olarak, bu ortamlar memcached'i o kadar hızlı doldurur ki, memcached etkili bir şekilde devre dışı bırakılır çünkü hiçbir zaman yararlı olacak kadar uzun süre veri tutamaz. Etkili bir şekilde hiçbir Geçici API önbelleğiniz yok!
Ancak WordPress Geçici İşlemleri ile farklı ama yine de çok istenmeyen davranışlarla karşılaşıyorsunuz. Değerler, sabit boyutlu bir RAM bloğuna değil, veritabanına yazıldığı için, hepsi ortalıkta kalır. Bu, aşırı yüklü sitede bile oturum verileriniz olduğu anlamına gelir. Mükemmel!
Ya da öyle düşündün. Çünkü Transient API'de söylenmeyen, oturumlar gibi benzersiz anahtarlar kullandığınızda olanlardır. Ve yerleşik yöntemle olan şey, seçenekler tablosunun süresiz olarak dolmasıdır! Çünkü: WordPress'in "eski veri temizleme" özelliği, yalnızca anahtarı talep ettiğinizde çalışır (daha önce ele aldığımız gibi). Anahtarı öylece bırakırsanız, seçenekler tablosunda sonsuza kadar kalır. Bunları temizleyen ayrı bir süreç yok!
Sadece bu sorunun farkında değiliz, bunu anlamayan bir kod çalıştırıyor olabilecek müşterilerimize yardımcı olmak istiyoruz. Yönetilen WordPress'teki "yönetilen" burada devreye giriyor! Her gece, süresi dolan geçici olaylar için seçenekler tablonuza bakmak ve bunları (hem veriler hem de son kullanma tarihi öğesi) silmek için otomatik bir sürecimiz var. Boom! Gittiler ve onlar için endişelenmene gerek yok.
Bunu yapmamız harika, ancak herhangi bir barındırma ortamında düzgün çalışması gereken genel bir eklentinin veya temanın geliştiricisi olarak, bunu eklentinizin veya temanızın konuşlandırılabileceği tüm potansiyel ortamlarda yapamazsınız ve siz Kullanıcılarınıza ve müşterilerinize mümkün olan en optimize edilmiş kodu sağladığınızdan emin olmak istiyorum.
Ancak, artık Geçişlerin nasıl ters gidebileceğini bildiğinize göre, kodunuzu nasıl daha verimli hale getirebileceğinizi görmek harika bir fikir olabilir. Büyük olasılıkla, buraya kadar okuduysanız, kodunuzu optimize etmeyi seviyorsunuzdur ve bu blog gönderisi sizin için zorlu bir mücadele verebilir ve bazı şeyleri daha ölçeklenebilir olacak şekilde yeniden yazmanız için sizi motive edebilir!
WordPress Sitenizle Daha Fazlasını Yapın
Bir WordPress geliştiricisi olarak, hızlı performansı korurken son kullanıcılarınıza uzak verilere erişim sağlamak çok önemlidir. WordPress geçişleri tam da bunu başarmanıza yardımcı olabilir.
Ancak, yıldırım hızında WordPress barındırma ve profesyonel geliştirici kaynaklarından biraz daha fazla yardım almaktan zarar gelmez. İster kodlama konusunda yeni olun ister deneyimli bir profesyonel olun, size yardım etmeye hazırız. Bugünkü planlarımıza göz atın!