WordPress için çok hızlı dinamik önbellekleme: Siteground’dan Hristo Pandjarov ile röportaj

Bu hafta Siteground’dan Hristo Pandjarov ile röportaj yaptık. Hristo, sunucu belleği tam bir sayfası sunmak için Nginx’i ters bir proxy olarak kullanan yenilikçi dinamik önbellekleme çözümünün bir kısmı olan Siteground CachePress CachePress eklentisinin geliştirilmesine yardımcı oldu (burada açıklıyoruz). Site Alanı Hakkında: Bu, favorimiz (Site Alanı İncelemesi ve Planlar Seçme Kılavuzu) ile ajans sitelerimiz ve diğer web projelerimiz için ev sahipleri ile bir barındırma şirketidir. Tüm bunlar, bir site alanı Gogeek hesabı aracılığıyla – süper formal ve% 100 güvenilir – sunulmaktadır.


Tam Mülakat Not: Video, transkriptten kaldırdığımız eklenti kodundan ekran paylaşımı tabanlı bir kılavuz içerir. Zevk almak!
https://www.youtube.com/watch?v=09glthqgzoa
Fred’in bir kopyası: Site alanında teknik lider olan Hristo’ya, CachePress Cacming eklentisini tartışmak için katıldık. Site alanında yayınlanan her WordPress kurulumu bir site alanı önbellek çözümü Supercacher alır. CachePress, doğrudan barındırma arayüzünüzü girmek zorunda kalmadan WordPress yöneticisindeki önbellek süper kepçesini yönetmenin bir yoludur. Hristo, lütfen bize biraz önce, oradaki tarih ve ne kadar süredir yaptığınızdan bahsedin.
Hristo CachePress’in Tarihi: WordPress’in genel performansını sadece önbelleğe almak için değil, birçok şey yaptık.Bu, WordPress için en hızlı barındırma ortamını sağlamak için büyük bir çabadır – son tarih, yapılandırmadan başlayarak ve en son PHP sürümüne ve memcached’e sahiptir.Her şey büyük bir şey, diğerlerine çok bağlı.Önbellekleme, özellikle WordPress için müşterilerimize olağanüstü yükleme hızı sağlamak için yaptığımız şeyin büyük bir parçasıdır.Nginx’i ters bir proxy olarak kullanıyoruz ve WordPress hizmetlerini ve sitelerini sorunsuz bir şekilde entegre etmek istediğimiz için eklentiler geliştiriyoruz.Aslında web sitelerini tamamen önbelleğe almak çok zor değil, ancak bunu yapmak zorunda kaldığınızda önbelleği silmek zor.Ve önbelleği manuel olarak temizlemeniz gerekmeden sorunsuz çalışmasını sağlamak kolay değildir.İşte burada eklenti yapmaya başladık.
Ters proxy nginx nginx ters proxy olarak önbellek eklentisinden çok daha hızlıdır, çünkü içerik önbelleğini sunucu belleğinde saklar. David: Girmeden önce saf bir sorum var: Proxy ters Nginx, WP Super Cache veya başka bir şeyden nasıl farklı veya daha iyi? Hristo: Ters proxy olarak Nginx, sadece Nginx’in bir hizmet olduğu ve sunucu boyunca çalıştığı ve daha sonra önbellek içeriği sunucu belleğinde saklandığı için düşünebileceğiniz önbellek eklentisinden çok daha hızlıdır. Ziyaretçileriniz önbellek içeriğini açtıklarında, önbellek sayfasını yüklemek istediklerinde, sayfayı en hızlı şekilde alırlar: Notlarını Web sunucusuna ulaşmadan önce bile RAM Server’dan alırlar. Bu yüzden iki avantajımız var: İlk olarak,, önce,, önce, İçeriğinizi mümkün olduğunca hızlı bir şekilde alıyorsunuz. Sunucu belleğinden daha hızlı bir şey yoktur. İkincisi, ziyaretçinin web sunucusuna verdiği yükü önemli ölçüde azaltırsınız; Etkilenen PHP işlemci olmadığından, web sunucusuna bile ulaşmazsınız. W3 Total Cache gibi sıradan önbellek eklentileri tarafından yapılan şey oldukça benzerdir, ancak yaptıkları sabit sürücü sunucusunda oldukça fazla statik dosyaları olmasıdır. Ve yükleme süresini sabit diskten bir şey yüklemek için karşılaştırırsanız, sunucu belleğinden yüklenmesi çok daha hızlıdır.
Ve yine, bir eklenti kullandığınızda, ziyaretçiniz web sunucusuna basar ve ardından web sunucusu dosyayı yükler ve tekrar tıklatırsınız. Bu hala statik bir HTML dosyasıdır, ancak bir kez daha – bizim durumumuzda Nginx’in arkasında duran Apache tarafından işleniyor. DAVID: Yani Apache’nin önünde yeni bir katman var, diğer eklentilerle Apache’ye basmanız ve dosya içeriğini geri yüklemeniz ve geri yüklemeniz gerekiyor. Haristo: Evet. Ve yine, içeriği sabit sürücüye yüklersiniz, ters proxy’imizle statik, dinamik, dinamik ve statik önbellek, javascript ve diğer statik içerik nesnelerinden yüklersiniz; Memcached nesne önbellekleri veritabanı sorgularını depolar; Ve dinamik Nginx önbellek tam bir sayfadır. Fred: Bu önbellek için üç kat var, değil mi? Haristo: Evet. Fred: Her biri ne yaptıklarını bilmek çok hoş olurdu. Hristo: Statik önbellek varsayılan olarak tüm hesaplarda etkinleştirilir. Bu oldukça kolay: Statik bir önbellek yapıyor. Bu önbellek CSS, JavaScript, Flash, Statik İçerik Arama. Siteground eklentisini kullansanız da kullanmasanız da, yalnızca etki alanı boyunca çalışır. WordPress’i kullanmanıza bile gerek yok. Sadece statik içerik önbellek, hepsi bu.
Dinamik önbellek ilginç bir parçadır; Şimdiye kadar bahsettiğim ters proxy bu. Memcached’in arkasındaki fikir, veritabanı bağlantınızı hızlandırmaktır. Veritabanınıza sıklıkla tekrarlanan belirli sorgularınız varsa, bu işlemi yardımcı olabilir ve hızlandırabilir. Son sekme HHVM’dir, ancak HHVM yalnızca bulut barındırma hesabımızda mevcuttur, bu yüzden GoGeek’te alamazsınız. Nginx’ten içerik aldığınızda, tam sayfa önbelleğe alınmasıdır: HTML çıkışını tamamlayın. Ayrıca görüntüler, JavaScript, CSS dosyaları gibi statik içerik kaydederiz. Bununla birlikte, HTML çıkışı ile mekanizma aynıdır: bu bir nesne önbellekleme değil, tam bir sayfa önbelleğidir. David: Kullandığımız GoGeek ile paket için, nesne önbelleğe sahip olduğumuzu ve sunulduğunu biliyorum eklenti aracılığıyla. Hristo: Evet, bu eklenti memcached d2’yi etkinleştirmenizi sağlar. DAVID: Ve bu, geçici olarak hafızada tutuyor, değil mi? Hristo: Diğer şeylerin yanı sıra.
CPanel ve Kullanıcı Arayüzü CPanel’deki Supercacher’ı etkinleştirdiğinizden emin olun. Eklenti, WordPress ve Service arasında bir irtibat görevi görür: Dinamik önbellek CPanel’de etkinleştirilmezse, eklentiniz etkinleştirilmesine rağmen, doğru başlığı sağlasa bile önbellek çalışmaz. En son eklenti işlevinin bir kısmı, önbellek olup olmadığınızı test etmektir, çünkü hizmetin çalıştığından emin olmak önemlidir.
Giren kullanıcılara önbellek içeriği sunmuyoruz, fikir web sitenize girerseniz yüzde yüz dinamik içerik görmeniz gerektiğidir.Bu, özellikle alışveriş sepetleri ve Buddypress ve dinamik bir sosyal ağa veya başka bir şeye sahip olmak isteyen insanlar için yaptığımız şeylerden biri.Eğer girerseniz, dinamik içeriği istediğiniz zaman göreceksiniz.Fred: Önbelleklemeyi gerçekten anlamayan geliştiriciler açısından, genellikle önbelleğe dikkat ettiğim kaynaklar genellikle görüntü dosyaları ve CSS dosyalarıdır-bu önbelleği temizlememi zorlaştıran şeylerdir.Bu kaynakları depolayan gerçekten statik katmanlar gibi geliyor.
Hristo: Evet, statik olan kesin. Fred: Peki onu temizlediğinizde, üç katmanı temizliyor mu? Hristo: Evet, alan adı için her şeyi temizler. Metninizin güncellendiğini görürseniz ve hala eski resimlerinizi görürseniz, bu statik bir önbellek olduğu anlamına gelir. Tüm eski sayfalar varsa, bu dinamik önbelleğin de bittiği anlamına gelir. Otomatik Temizlik ve WordPress Hooks Eklenti tarafından yapılan ana şeylerden biri otomatik temizleme işlevi veya otomatik temizliktir. WordPress sitenizdeki çeşitli etkinlikleri izliyoruz. Sonra önbelleği – maalesef, şimdiye kadar, tüm alan adları için – temizliyoruz – yayınları veya sayfaları güncellediğinizi, eklentileri veya herhangi bir şeyi yüklediğinizi her tespit ettiğimizde. Eklentinin önbelleğin ne zaman temizlenmesi gerektiğini bilmesi gerekir, bu nedenle kancaların bir listesini yaptık: public fonksiyon atanesi_hooks_for_autoflush () {add_raction (‘save_post’, array ($ this, ‘hook_add_post’)); Add_action (‘edit_post’, dizi ($ this, ‘hook_add_post’)); Add_action (‘publish_phone’, dizi ($ this, ‘hook_add_post’)); Add_action (‘publish_future_post’, dizi ($ this, ‘hook_add_post’)); Add_action (‘xmlrpc_publish_post’, dizi ($ this, ‘hook_add_post’)); Add_action (‘önce_delete_post’, dizi ($ this, ‘hook_delete_post’)); Add_action (‘trash_post’, dizi ($ this, ‘hook_delete_post’)); Add_action (‘add_category’, dizi ($ this, ‘hook_add_category’)); Add_action (‘edit_category’, dizi ($ this, ‘hook_dit_category’)); Add_action (‘delete_category’, dizi ($ this, ‘hook_delete_category’)); Add_action (‘add_link’

, dizi ($ this, ‘hook_add_link’)); Add_action (‘edit_link’, dizi ($ this, ‘hook_dit_link’)); Add_action (‘delete_link’, dizi ($ this, ‘hook_delete_link’)); Add_action (‘yorum_post’, dizi ($ this, ‘hook_add_comment’), 10.2); Add_action (‘yorum_unapppoved_to_approved’, dizi ($ this, ‘hook_approve_unprove_comment’)); Add_action (‘yorum_appoved_to_unappoved’, dizi ($ this, ‘hook_approve_unprove_comment’)); Add_action (‘delete_comment’, dizi ($ this, ‘hook_delete_comment’)); Add_action (‘trash_comment’, dizi ($ this, ‘hook_delete_comment’)); Add_action (‘switch_theme’, dizi ($ this, ‘hook_switch_theme’)); Add_action (‘customize_save’, dizi ($ this, ‘hook_switch_theme’)); Add_action (‘otomatik_updates_complete’, dizi ($ this, ‘hook_atomatic_update’)); Add_action (‘future_to_publish’, dizi ($ this, ‘scheduled_goes_live’)); Add_action (‘_core_updated_successful’, dizi ($ this, ‘core_update_hook’)); fred: Yani bu önbelleğin temizlenmesine neden olacak şeylerin bir listesi mi?
Hristo: Evet, izlediğimiz pek çok şey. Önbellekleme çalışması ve cron mekanizması CRON Dahili WordPress, kullanmak için eğlenceli bir şeydir. Burada komik bir hikaye: WordPress’in içi, iç cron mekanizması eğlenceli bir şey. İnsanların yayınları planlayacağında sorunlarımız var. Bir yıl önce olanlar – geri döndürüyoruz, ancak yaygın olan şey, örneğin, yeni bir yazı yazıyorsunuz, gönderiyi tamamlıyorsunuz, ardından yarın yayınlanacak şekilde planlıyorsunuz. Yani, sadece sitenizden çıkıp tatile çıkıyorsunuz. CRON Dahili WordPress İşlevleri Herhangi bir Page-WP-CRON.phP’ye bir tıklama olduğunda, WordPress’in planlanan görevleri yerine getirmediğini veya yapmaması gerekip gerekmediğini kontrol eder. Bunu böyle yapıyorlar çünkü mevcut Cron işlerine sahip her barındırma ortamına gerçekten güvenemezler. Böylece birisinin sayfayı açacağı ve PHP dosyasının girilip yürütüleceğine güvenirler ve daha sonra WordPress, yayınınızın yayınlanıp yayınlanmayacağını kontrol edecektir. Sorun, tüm web sitelerinizi önbelleğe aldığımızda ve ziyaretçileriniz bu sayfaları yüklemeye başladığında, bu sayfalardan önbelleği alıyorlar. Talepleri asla bir web sunucusuna ulaşmadı ve PHP hizmetine hiç ulaşmadı. Böylece wp-cron.php dosyası asla yürütülmez. Fred: İnsanlar hiç yayınlanmamış yayınları planlıyorlar. Haristo: Evet. Birisi önbellek temizliğini tetikleyen siparişler göndermedikçe. Yaptığımız şey, wp-cron.php dosyasını her zaman görünmesi için önbellekten hariç tutmaktır;
Ve bir görevin kamuya açık tarihine ulaştığını bize söyleyen bu kancayı ekledik.Yani bu iki şey bu sorunu çözüyor.Başlangıçta buna başladığımızda düşünmediğimiz şeylerden biriydi.Bu yüzden elde ettiğimiz tüm geri bildirimler bizim için çok önemli.Her zaman izleriz.Örneğin, “Temiz Temiz Önbellek” düğmesi, yayınlamadan yaklaşık iki hafta önce müşterilerimizden biri tarafından talep edilir ve “Evet, mantıklı, programda bir yere yükleyeyim” gibiyiz ve aşağıdakiler gibiyiz Hafta yeni sürüm.
Nginx Fred’e temizlik komutları göndermek: Önbelleğe kendini temizlemesini nasıl söylersiniz? Hristo: Alan adını ve önbelleğini temizlemek için bir gölgelik gönderiyorsunuz. Ve Nginx anladı ve temizledi. David: Dosya yolundan bulunan sunucu için IP’de – Hristo: Nginx için Vernik sunucusu IP adresini almak için buna güveniyoruz. Son zamanlarda vernikten nginx’e geçtik. Vernik’i dinamik önbellekleme için ters proxy olarak kullanıyoruz, ancak Nginx’i çeşitli nedenlerle kullanıyoruz, en büyüğü Vernik’in HTTPS isteklerini önbelleğe almamasıdır. SSL ile önbelleğe alınmaz veya en azından Vernik’in ücretsiz sürümü bunu yapmaz. Nginx oldukça iyi idare ediyor. Bu ana nedenlerden biri olabilir. Bir diğeri, sonunda vernikten nginx’e geçeceğiz. Ne zaman olacağından emin değilim, ama bu yaşadığımız bir şey. Fred: Bize bu Fopen () -Type işlevinden bahseder misiniz? Hristo: Herhangi bir sunucula böyle konuşuyorsunuz. Soket bağlantısını açın ve “Hey, bu alanı patlatın ve önbelleği temizleyin” dersiniz. Fred: soket nedir? Hristo: Zend’den önemli bir adam olan PHP hakkında daha fazla konuşmaya tercih eden birini davet etmelisiniz. [kahkahalar] Soket bağlantısını açın ve Nginx hizmetine komut gönder. Her şey başlığa göre çalışır. Birçok WordPress kullanımı için bir önbellek eklentisi oluşturmak gerçekten sayfa sayfasına göre temizlemek istiyorum, ancak WordPress’te çok fazla kenar durumu var. Fred: Neden bir seferde bir sayfayı temizlemiyorsunuz? Hristo: Birçok kenar vakası var;

İnsanlar WordPress’i birçok yönden kullanır, böylece her şeyi tartışamazsınız. Önbelleği yalnızca bir sayfa için temizleyebilirsem mutlu olacağım, çünkü yalnızca bir sayfayı güncellerseniz ve bu sayfanın önbelleğini silersem, diğer tüm sayfalar yine de önbellekten sunulacak ve sunucudaki yükü önemli ölçüde azaltacak . Ziyaretçileriniz de daha mutlu olacak, çünkü içeriği daha hızlı yükleyecekler. Ancak, dikkate almanız gereken milyonlarca şey var. Örneğin, yeni bir gönderi yazarsanız, dizin sayfanızı güncelleyeceğim – kolay. Yayın sayfanızı güncelleyeceğim – bir kez daha, kolay – ama “en son gönderi” widget’ınız varsa ne olur? Değiştirilecek içeriğiniz hangi URL’si olduğunu nasıl tespit edeceğim? HTML yorumlarını kullanarak farklı kod parçalarını önbellekten hariç tutabileceğiniz DSI modeli gibi birkaç zor şeye giriyoruz. Bir kez daha, çok fazla manuel çalışma gerektirecektir; Herkes için varsayılan olarak etkinleştiremeyiz. Ancak bu, listemizde gelecekte yapmak istediğimiz, dizininizde veya herhangi bir kodda basit HTML yorumlarını kullanmanıza izin vermek, “önbellekten hariç tut” demek.
Böylece bir önbellek sayfanız, ardından tamamen dinamik bir widget’ınız olacak. Fred Geliştirme Ekibi: Bana bu konuda çalışan ekip hakkında biraz bilgi verin. Hristo: Bu hizmet, sunucuları kodlayan insanlar olan işletim ekibimiz tarafından ele alınır: Yama çekirdekleri yaparlar, yedeklemeleri, bu tür şeyleri izlemek için kendi hizmetlerimizi kodlarlar. Bu insanlar çok akıllı ve çok iyi geliştiriciler. Yedi veya sekiz tanesi var ve sadece önbellekleme hizmetleri üzerinde çalışmakla kalmıyorlar – sunucu düzeyinde her şeyde çalışıyorlar. Örneğin, PHP’nin yeni bir sürümü varsa, işleri bunu sizin için sağlamaktır. Son zamanlarda eklentinin tasarımını değiştirdik ve duyarlı hale getirdik ve tasarımcılarımızdan biri ona yardımcı oldu. O zaman sadece ön uç işlevlerimizde, faturalandırma gibi dahili sistemlerde çalışan yaklaşık on geliştiricimiz var. Daha karmaşıksa, onlara güvenebilirim. O zaman bu benim. Yani bu sadece ben değil, birleşik bir çaba. Birçok kişi eklentilere katkıda bulunur. Akıllı varsayılan olarak “Eklentiniz varsayılanınız kadar iyidir”. Fred: Cachepress, site alanında asılmayı gerçekten sevdiğim birçok şeyden birine dönüştü. Geçen yıl için sadece kullanıcı arayüzünde büyük bir artış olduğunu düşündüm. Hristo: Teşekkür ederim. Bunun için çok çalıştık. Geçen yıl WordCamp Europe’da Yoast’tan çok iyi bir tartışma vardı. Genellikle “eklentiniz varsayılanınız kadar iyi” diyor.
Bir barındırma şirketinde çalışırken, her gün insanların karşılaştığı pek çok sorunun iyi bir görüşüne sahipsiniz.Birçok kişi, eklentileri birçok düğme, ayar, onay kutuları, açılır şekilde yapılandırmada sorun yaşar.Geniş kitleye bir çözüm sağlarsanız ve her türlü yapılandırmayı yapmalarını istiyorsanız, bir şeye zarar verme şanslarını önemli ölçüde artırırsınız.Bu nedenle, örneğin, bir tıklama bir kez WordPress kurulumunu kullandığımızda, eklenti etkinleştirilir.Başka eklentiler eklemiyoruz, sadece Supercacher;

Vardır, etkinleştirilir, floş varsayılan olarak otomatik olarak etkinleştirilir ve dinamik önbellek varsayılan olarak etkinleştirilir. Ana hedeflerimizden biri mümkün olduğunca basit hale getirmek ve yine de bir performans iyileştirmesi elde etmektir. Sonuç David: Nginx’in ekstra katmanı, temizlik mantığına biraz karmaşıklık eklemeyi içerir. Ancak arayüzde ustalaştıktan sonra, bu basit ve Fred’in dediği gibi nükleer bir düğme var. Bu harika bir deneyim ve bu fiyat için hayal edebileceğiniz en hızlı önbellektir. Hristo: Evet, şu anda sunucu belleğinin statik bir HTML’sini yüklemekten daha hızlı bir şey düşünemiyorum. RAM’den daha hızlı bir şeyle geldiklerinde, içerik önbelleğini düşüneceğiz. Başka bir hız denklemi, içeriğinizin hacmi, istek sayısı ve siz ve sunucunuz arasındaki fiziksel ağ bağlantılarıdır. Fred: Hristo, eklentiler aracılığıyla bize rehberlik ettiğiniz için çok teşekkür ederim ve genel olarak önbellekleme şekliniz boyunca bize rehberlik ettiğiniz için teşekkür ederiz. Seninle konuşmak gerçekten eğlenceli. Hristo: Teşekkürler, burada sizinle birlikte olduğunuz için mutluyum. Site alanına çok teşekkür ederim!

admin

Bir Cevap Yazın

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