Önbellekleme WordPress’te nasıl çalışır?

Önbellekleme, tüm performans sorunları için “kutsal fincan” olarak izlenim verebilir. Sunum, toplantı veya atölyemde “önbelleklemeyi kullanmayı bırak” dediğimde insanların kaşlarını kaldırmasına şaşmamalı. Bazı insanlar için, özellikle WordPress topluluğunda önbellek yapmaktan nefret eden bir kişi oldum. Bu nedenle, bu konu hakkında gerçekten ne demek istediğimi, konunun ne zaman ve ne kullanılması gerektiğini açıklamanın zamanıdır. Ve belki de en önemlisi, önbellek kullanmıyorken ve alternatif çözümler bulurken. Tam sayfa önbellekleme ne zaman kullanmalısınız? En büyüğüyle başlayalım. Tam bahçe önbellekleme veya sadece bir avlu önbellek. Aynı kodu (HTML) ziyaretçilere sınırlı bir süre içinde göndermek için daha önce yapılan sayfa sürümünü geçici olarak kaydettiğiniz teknik. Tam sayfa önbelleğe alınması budur:
Ziyaretçi A ABC.com/Page ziyaret ediyor. Bu sayfa önbellekte ve PHP ile ilgilidir ve veritabanından üretilir. Ziyaretçi A’ya hizmet edilmeden önce, 10 dakikalık sona erme ile dolu bir sayfa önbelleğinde de saklanır.
Ziyaretçi B, ziyaretçi A’dan 2 dakika sonra ABC.com/Page’i ziyaret etti ve bu nedenle aynı sayfayla sunuldu, ancak bu kez doğrudan önbellekten. A ve B ziyaretçilerine sunulan sayfalar aynıdır.
Ziyaretçi C ziyaretçi A’dan 15 dakika sonra ABC.com/Page’i ziyaret etti ve sayfa sürümü önbelleğinin süresi dolduğundan, PHP ile ilgili istekler tekrar A. Ziyaretçiler için yeniden yapıldı.
Bu sayfayı geçerli bir önbellek sayfasının bulunduğu bir zaman aralığında ziyaret eden herkes çok hızlı bir şekilde gönderilebilir.Önbellek sayfaları göndermek için neredeyse hiçbir kaynak yoktur ve bu nedenle tam sayfa önbellek performansı ve daha da önemlisi ölçeklenebilirliği artırabilir.Kulağa çok ilginç geliyor, ancak tam sayfa önbelleğinde de birkaç büyük zayıflığı var. Dinamik, kişiselleştirilmiş içerik göndermek istiyorsanız veya farklı kullanıcılara farklı içerik göndermek istiyorsanız – bu, HTML belgesinin ardından çalışan JavaScript (AJAX) ile çözülmelidir. ziyaretçiye gönderilir.Bu iyi çalışabilir, ancak sunucuya başka ek istekler gerektirir.Hızlı kod yazmaktan kaçınmak için bir önbellek kullanıyorsanız, dinamik isteklerinizle ilgili sorunlar yaşayacaksınız.
Bir şeyin sizin için hızlı çalıştığı için, herkes için hızlı olduğu anlamına gelmez. Web sitesinde bir giriş noktası yoktur ve ziyaretçiler çeşitli sayfalardan sitenize gelir. Bu esas olarak ziyaretçilerin Google’ı kullandığı ve ürün sayfasından geldiği WooCommerce için geçerlidir. Veya Google Alışverişi, ürün sayfasına doğrudan bağlantı içeren eksiksiz bir katalogda çalıştırıyorsanız. Bu sorunun üstesinden gelmek için, bazı insanlar her sayfanın önbellek olmasını sağlamak amacıyla siteyi dizine eklemek için bir örümcek kullanarak tam sayfa önbelleğini “hazırlayarak” düzeltmeye çalışır. Uygulamada, bu iyi gitmez. Bu savunmasızdır, yönetilmesi zordur ve doğru bir şekilde yapılandırılmıştır, sürdürülmesi ve zaman alması zordur – ve kesinlikle gereksizdir. Web sitenizin gerçek performansının kontrolünü ve kodun çalışma şeklini (veya gerektiği gibi çalışmaz) kaybedersiniz. Tam sayfa önbelleğe alınma kullanıyorsanız, sitenizin gerçek yanıt süresi ve kodunuzun ne kadar iyi çalıştığı hakkında tadını kaybedersiniz. Deneyim, gerçek performansa odaklanmamanın, sitenin Kara Cuma gibi günlere veya büyük kampanyalar dağıtırken vurmasının ana nedeni olduğunu göstermektedir.
W3 Total Cache gibi önbellek eklentisi ne olacak? W3 Total Cache gibi WordPress eklentileri diğer tüm sayfalar gibi işlevler. Daha önce yapılan sayfa sürümünü dosya veya bellek sistemine kaydederler ve geçerlilik süresi bitene kadar kullanıcıya sunar. W3 Total Cache 1 milyon web sitesi tarafından kullanılır, ancak bu iyi bir fikir olduğu anlamına gelmez. Özellikle hızlı barındırma kullanıyorsanız. W3 Total Cache çok büyük bir eklentidir ve çoğu site için – bu yalnızca web sitesine gitmesi gerekmeyen birçok kod ekler. Daha fazla kod, daha fazla şeyin yanlış olabileceği anlamına gelir. Gerçekten tam sayfa önbelleğe alınmanız gerekiyorsa, PHP yavaş olduğu için bu, uygulamanızın PHP bölümünde yapılmamalıdır. Tam sayfa önbellek, web sunucusundaki kullanıcılara mümkün olduğunca yakın yapılmalıdır (bizim durumumuzda Nginx). W3 Total Cache, 2 saniyeden daha kısa bir sürede yayınlanan bir sayfa yapmayı yirmi -sixteen gibi gösteriyor. Netleştirmek için; Sunucumuzdaki benzer testler, saniye değil önbellek kullanmadan yaklaşık 100 milisaniye gönderilecektir.
Peki ne zaman tam sayfa önbelleği kullanmanız gerekiyor ve neden? Trafik dalgalanmalarını ele almayı kolaylaştırmak için çok fazla trafiğe sahip web sitelerini dağıtmak için tam bahçe önbellekleme yapılır. Tam sayfa önbelleğe alınma, insanlar web’i çoğunlukla haber makalelerini okumak için kullandığında bulunur. Her ziyaretçi için benzersiz içerik üretmek gazeteler için mantıklı değildir, çünkü sayfaları çoğunlukla nadir güncellemelerle statiktir. Bu senaryo için, tam sayfa önbellek gerçekten doğru ama web sitesi artık bir uygulama gibi. Tam bir sayfa önbelleğini düşünürseniz, Service Optimizer’ı denemelisiniz. Bu gerçekten WordPress için en hızlı önbellek eklentisidir. Çağdaş web siteleri daha karmaşık, dinamik ve daha kişiseldir. Kod giderek daha karmaşıktır ve karmaşık kodun üzerine daha karmaşık bir mekanizma (önbellekleme tekniklerini okuyun) ekler. Uygulamada, yeni bir başarısızlık noktası getiren, bakım, iyileştirme ve özel işlemler gerektiren başka bir teknoloji katmanı ekleyeceksiniz. Bu, hatanın çözülmesini zorlaştıracak ve genel gelişme daha zor (daha pahalı). Performansınızı tam sayfa önbelleğine dayandırırsanız, önbellek çalışmayı durdurursa çözümün çökeceğini garanti edebilirim.
Bu nedenle, sorunun cevabı iyi bir kod ve sorgu yazmak ve çözümün keşfedilmesi gerektiğini unutmayın. Gazete gibi ani trafik dalgalanmalarını idare etmek için tam bir avlu önbellek kullanmak sorun değil ve hala bitiyor. Normal bir günde, normal trafikle, gerginlik olmadan tam bahçe önbelleğini kapatmak mümkün olmalıdır. Ve doğru olanı yaparsanız, web sitenize zarar vermeden çok fazla trafik ile günlerde tam sayfa önbelleğini kapatabilmelisiniz. Sunucuda, çoğu dükkan, Black Friday gibi yüksek trafikli günlerde tam sayfa-hatta önbelleğe almadan çalışır. WordPress nesneleri, birçok kişinin WordPress nesne önbelleğinin neredeyse tüm WordPress sitelerinde kullanıldığını bilmediğini fark etmeden kullanırsınız. Ve evet, nesne önbelleği, memclied veya redis gibi harici bir nesne önbellek kullanmasanız bile etkilidir. WordPress nesnesi önbellek nasıl çalışır?
Get_post_meta () kullanarak postmeta değeri olan bir istekte bulunuyorsunuz
WordPress bir istek çalıştırır ve sonuçları veritabanından alır ve sonuçları nesne önbelleğinde (bellek, RAM) otomatik olarak saklar
Sonuçları alırsınız ve kodunuzda bir yerde kullanırsınız
Sonra kodunuzda, aynı veriler için başka bir get_post_meta () isteği yaparsınız
WordPress zaten nesne önbelleğinde var ve bir veritabanı istemeden doğrudan döndür
Sayfa ziyaretçilere gönderilir ve nesne önbellek silinir (bellek serbest bırakılır)
WordPress’teki tüm işlevler sonuçları nesne önbelleğinde saklamakla kalmaz, ancak get_post_meta () saklar. Bunun nedeni, veritabanındaki _postmeta tablolarının çok büyük büyüyebilmesi ve talep pahalı olabilir (çok sayıda bilgi işlem kaynağı kullanarak). Bir geliştirici olarak, sonuçları nesne önbelleğine ekleyebilirsiniz, böylece aynı verilerin yeniden kullanılması Daha sonra daha hızlı olabilir. WP_Query ile kendi kuyruğunuzu yazarsanız, sonuçları nesne önbelleğinde kaydetmeniz gerekir. Hatırlamak önemlidir, tüm önbellekleme gibi, buna inanamıyorsunuz. Bu nedenle, sonuçlarınızın nesne önbelleğinde olduğunu varsayan bir kod yazmadığınızdan emin olun. Sorgu monitörü gibi bir eklenti yükleyerek nesne önbelleğinin performansını ve veritabanındaki sorgu sayısını kontrol edebilirsiniz. Sıradan Wooocommerce ile yapılan testimde, önbelleğin normal isabet oranı% 95 ile% 98 arasındadır.
WordPress nesne önbelleğini kendi sorgularınız için nasıl kullanılır $ sonuç = wp_cache_get (‘some_unique_name’);
İf (yanlış === $ sonuç) {
$ sonuç = $ wpdb-> get_results ($ query);
wp_cache_set (‘some_unique_name’, $ sonuç);
}
// $ sonuçlarla bir şeyler yapın; Bu kodun bu örneği ile yapılan şey önce $ sonuç almaya çalışmak ve ardından gerçekten $ sonuç olup olmadığını kontrol etmektir. wp_cache_get () Orada değilse false geri yükleyin. Veri yoksa, verilerimiz için kuyruğu çalıştırırız ve daha sonra gelecekte istekler için kullanılabilir olması için wp_cache_set () ile tutarız.
Peki ya Memcached ve Redis gibi harici nesne önbelleği ne olacak? Önbellek harici nesne, daha spesifik olarak “kalıcı nesne önbellek” olarak adlandırılan şeyi sağlayabilir. Sayfa ekranı arasında kırmızıya dönmeyen bir nesne önbelleğidir, böylece verileri çeşitli sayfa görünümlerinde saklar. Akıllı fikir, değil mi? Ancak her zamanki gibi önbellekleme ile, o kadar basit değil. Kalıcı bir nesne önbelleğinin kullanımının performansı potansiyeli, nesne önbelleğini atlayan vuruşla sınırlıdır. % 95 -98-% 98-% 98-% 98 -Fersonhens olmayan önbellek kullanılarak, performansın potansiyel iyileştirilmesi talebin% 2 ila% 5’i arasındadır. Buna ek olarak, harici nesne önbellek bazı ek gecikmeler ekleyecektir, çünkü bu harici bir uygulamadır-böylece daha önce doğrudan PHP’de sunulan% 95-98’i yavaşlatacaktır. Ek gecikmenin net avantajı + harici bir nesne önbelleğinin performansının iyileştirilmesi, e-niaga mağazaları için genellikle negatif hale gelir.
Harici bir nesne önbelleği kullansanız bile, kodunuzu yazarken bilgilerin var olduğuna inanamazsınız.
Sayfanın iyi bir hızda yüklenmesini sağlamak için harici nesnelerin önbelleğine güveniyorsanız, kodunuzun kötü olduğu, veritabanı sorgusu çok ağır veya çok fazla olduğu anlamına gelir. Asıl sorun, veritabanının ne kadar hızlı yanıt verdiği değil, kodunuzdadır. Bu yüzden memcached veya Redis Band yardımını kullanmamalısınız.
Optimize edilmiş ve dizinini doğru kullanan hızlı bir veritabanı kullanıyorsanız, harici bir nesne önbelleğine ihtiyacınız yoktur.
Harici bir nesne önbelleğine ihtiyacınız yoksa, tehlikeli kullanmak onu gerebilir, ancak çoğu zaman tehlikeli olacaktır. Bu gerçekten ihtiyacınız olmayan web yığınınıza dahil ettiğiniz tüm teknolojiler için geçerlidir. Eğer varsa, kendinize güvenme fırsatı, gerçekten ihtiyacınız olmasa bile çok büyüktür. Ona güvenirseniz, hata şansını artırırsınız. Buna ek olarak, bir yığın içine eklenen teknolojinin her kısmı kurulum, yapılandırma, bakımı, güvenliğin iyileştirilmesi ve bir başka arıza noktası getirilmesi gerekir. Geçici iyi olabilir, ancak aynı zamanda Sitenizin geçici WordPress ve çeşitli eklentiler tarafından kullanılır ve konsept oldukça basittir. Daha sonra yeniden kullanılacak veritabanında bir istekte bulunur ve sonuçları veya kısmını kaydedersiniz. Nesne önbelleğinden farklı olarak, veritabanında saklandığından, bunu tüm sayfa ekranında kalmasını sağlamak için herhangi bir ek teknolojiye ihtiyacınız yoktur. Geçici, son kullanma süresi olabilir ya da olmayabilir – bu sizin seçiminizdir. Şahsen ben geçimin aşırı kullanımını sevmiyorum ve WordPress tablosunda depolanan itutransient’in birçok nedeni var. Bu tablo yaygın olarak kullanılmıştır ve _options’a aşırı yazı kilitleme sorunlarına (kuyruklar) neden olabilir.
Aşırı geçici kullanımı büyük bir _options tablosu üretecektir. Her sayfa ekranı bu tabloya bağlıdır ve büyük bir seçenek tablosu tüm sayfa ekranlarındaki performansı azaltabilir.
Süresi dolmayan geçici, wp_load_alloptions () aracılığıyla her sayfa yüklemesi (otomatik yükleme) için sorulacaktır. Bu, tüm sayfa görünümlerindeki performansı azaltacaktır. Ancak, bu kelime – geçici olarak doğru kullanılırsa performans için çok iyi olabilir. Sıklıkla kullanılan ve nadiren değişen veriler için bir sorgu yaparsanız, sonuçları geçici olarak kaydetmelisiniz. WordPress’in diğer tablolardaki seçenekleri çalıştırmak yerine seçenek tablosundaki X anahtarının değerini alması çok daha kolaydır. Bununla birlikte, geçici kullanıyorsanız – tablonun vahşi büyümemesini sağlamak için _options tablosunun denetlendiğinden emin olun ve artık kullanmadığınız veya süresi dolduğunu geçici olarak temizleme uyguladığınızdan emin olun. Ve asla güncellemeler gerektiren veriler için geçici kullanmayın, performansı kapatır. Önbellek fragmanı, doğru şekilde kullanılırsa, öğeleri, sayfanın bölümlerini veya kaynak üretmek için pahalı ve/veya sıklıkla kullanılmak üzere başka bir şey depoladığınız bir önbellek türüdür. Birçoğu, Mark Jaquith’in WordPress’te önbelleğe alınma işlevlerini uygulamayı seçti. Parça önbellekleme, daha sonra daha hızlı gönderilebilmesi için sonuçların (HTML çıkışı) depolanması anlamına gelir. Fikir bu kadar basit. Hangi öğelerin önbellek olacağını seçebilirsiniz ve tam çıkış benzeri tam sayfa önbelleğe alınmanıza gerek yoktur. Bunu WordPress’te yapma şekliniz önbelleğe alma nesnesine eşdeğerdir, çünkü önbelleğe alabileceğiniz veri sınırı yoktur. Bu nedenle, aynı ilke geçerlidir;

Bir şeyin önbellek olduğuna asla inanmayın, ona güvenmediğinizden emin olun ve bir önbellek fragman kısayolu almak yerine kodunuza odaklanın. Birçoğu bellek tabanlı parçaların önbelleği uygular. Ancak etki için, sayfa ekranı boyunca öğeleri kullanılabilir hale getirmek için harici bir nesne önbelleği gereklidir (yukarıya bakın). Yumuşak fragman önbelleklerinin kullanılmasını öneririm ve bunun yerine verileri geçici olarak saklayın. Uygulamada, yığınınıza ek teknoloji eklemeden performans açısından aynı sonuçları verecektir. Geçici $ output = get_trantient (‘some_unique_key’); if ($ output === yanlış) {
$ output = ‘bazı veriler’;
set_transient (‘some_unique_key’, $ output, 3600);
}
// Bu kod örneğinde $ output olan bir şey yapın. Get_transient () yanlış geri yüklerse, veri üretir ve daha sonra kullanmak için geçici bir zamanda saklarız.
Bültenimize kaydolun!
Blogumuzdan güncellemeleri ve Gelen Kutunuzdaki yeni hizmetler hakkındaki duyuruları kabul edin. Bu, hizmet haberleriyle güncel kalmanın en kolay yoludur. Ücretsiz spam, elbette.

admin

Bir Cevap Yazın

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