Tüm WP Kodları Genel Kod Değil
Eğer herkese açık bir şey yayınlayacaksanız, kovshenin söylediği her şey son derece geçerlidir.
Kendiniz veya şirketiniz için özel kod yazacaksanız işler farklıdır.
Harici Nesne Önbelleği Her Durumda Büyük Bir Avantaj
Harici bir kalıcı nesne önbelleği ayarlamak için , mümkün olduğunda çok önerilir .
Kovshenin'nin geçici ve MySQL ile ilgili cevabında söylenen her şey çok doğrudur ve WP'nin kendisinin ve bir dizi eklentinin nesne önbelleğinden yararlandığını düşünürsek ... Redis veya Memcached gibi modern bir önbellek sistemi.
Önbellek Değerleri Olamayabilir: Sorun Yok
Dahası, evet, harici bir nesne önbelleği güvenilir değildir . Geçici bir durum olduğu gerçeğine asla güvenmemelisiniz. Önbellek olması gerektiği yerde değilse, çalıştığından emin olmanız gerekir .
Önbellek depolama değil, önbellek önbellektir.
Önbelleği Seçmeli Kullan
Bu örneğe bakın:
function my_get_some_value($key) {
// by default no cache when debug and if no external object_cache
$defUse = ! (defined('WP_DEBUG') && WP_DEBUG) && wp_using_ext_object_cache();
// make the usage of cache filterable
$useCache = apply_filters('my_use_cache', $defUse);
// return cached value if any
if ($useCache && ($cached = get_transient($key))) {
return $cached;
}
// no cached value, make sure your code works with no cache
$value = my_get_some_value_in_some_expensive_way();
// set cache, if allowed
$useCache and set_transient($key, $value, HOUR_IN_SECONDS);
return $value;
}
Özel sitenizde böyle bir kod kullanmak , özellikle çok fazla kullanıcınız varsa site performansı çok gelişebilir .
Bunu not et:
- Varsayılan olarak, hata ayıklama açıkken önbellek kullanılmaz, bu nedenle umarım geliştirme ortamınızda kullanılır. İnan bana, önbellek hata ayıklamayı cehenneme çevirebilir
- Varsayılan olarak, WP harici bir nesne önbelleği kullanmak üzere ayarlanmadığında da önbellek kullanılmaz. MySQL ile bağlantılı tüm problemlerin mevcut olmadığı anlamına gelir, çünkü MySQL kullandıklarında geçici değildir. Muhtemelen daha kolay bir alternatif,
wp_cache_*
işlevleri kullanmak olacaktır , bu nedenle harici bir önbellek kurulmamışsa, önbellek bellekte olur ve veritabanı asla dahil olmaz.
- Karşılaşabileceğiniz bazı uç durumları işlemek için önbellek kullanımı filtrelenebilir
Önbellek Yoksa Web Ölçekli Değil
Önbellekle ilgili hız sorunlarını çözmeye çalışmamalısınız. Hız sorunlarınız varsa, kod yazdığınızı tekrar düşünmelisiniz.
Ancak bir web sitesini web ölçeğinde ölçeklemek için önbellek oldukça gereklidir .
Ve çoğu zaman (ama her zaman değil) fragman, içeriğe duyarlı önbellek, agresif tam sayfa önbelleklemesinden çok daha esnek ve uygundur.
Sorularınız:
Geçici API'yı burada kullanmalı mıyım?
O bağlıdır .
Kodunuz çok fazla kaynak tüketiyor mu? Değilse, belki önbellek gerekmez. Söylendiği gibi, sadece bir hız meselesi değildir. Kodunuz hızlı çalışırsa, ancak birkaç kullanıcı için bir grup CPU ve bellek gerektirirse ... 100 veya 1000 eşzamanlı kullanıcınız olduğunda ne olur?
Önbellek iyi bir fikir olacağını fark ederseniz ..
... ve genel kod: muhtemelen hayır . Yukarıdaki genel kod örneğimde olduğu gibi seçici bir şekilde önbelleğe almayı düşünebilirsiniz, ancak bu tür kararları uygulayıcılara bırakırsanız genellikle daha iyidir.
... ve özel kod: çok büyük olasılıkla evet . Ancak özel kod için bile, seçici önbellekleme, örneğin hata ayıklama için hala iyi bir şeydir.
Her neyse, bu wp_cache_*
işlevlerin veritabanını kirletme riski olmadan önbelleğe erişebileceğini unutmayın.
$ Related_posts dizisini veya $ html_output dizesini önbelleğe almak için Geçici API kullanmalı mıyım?
Duruma göre bir çok şey üzerinde. Dize ne kadar büyük? Hangi harici önbelleği kullanıyorsunuz? Yayınları önbelleğe alacaksanız, kimliği dizi olarak saklamak iyi bir fikir olabilir, iyi sayıda gönderiyi kimlikleriyle sorgulamak oldukça hızlıdır.
Son Notlar
Geçici API, muhtemelen WordPress'in en iyi şeylerinden biridir. Her türlü önbellek sistemi için bulabileceğiniz eklentiler sayesinde, başlık altında çalışabilen çok sayıda yazılıma aptal basit bir API olur.
WordPress'in dışında, bir grup farklı önbellekleme sistemi ile kutudan çıkan ve soyutlamadan bir sistemden diğerine geçmenize izin veren böyle bir soyutlama bulmak çok zor.
WordPress'in diğer modern şeylerden daha iyi olduğunu söylemeyi nadiren duyabilirsiniz, ancak geçici API, WordPress ile çalışmadığımda özlediğim birkaç şeyden biri.
Elbette önbellek zordur, kod sorunlarını çözmez ve gümüş bir mermi değildir, ancak çalışan yüksek trafikli bir site oluşturmak için ihtiyacınız olan bir şeydir .
Önbellek yapmak için yeterince optimize edilmemiş bir MySQL tablosu kullanmak için WordPress fikri oldukça çılgınca, ancak WordPress'in varsayılan olarak yaptığı için kendinizi önbellekten uzak tutmak daha iyi değil.
Sadece işlerin nasıl çalıştığını anlamanız ve ardından seçiminizi yapmanız gerekir.