WP görüntü işleme kuyruğunu tanıtmak – görüntü işleme tamamlandı
Temel katkıda bulunanları ve eklenti yazarlarını bir buçuk yıldır arka plan işlemesi hakkında rahatsız ettim. Krogsgard’ın benimle dalga geçtiği ölçüde bile partiden sonra Wordcamp AB’deydi. “Brad, arka plan işlemeden tekrar konuşuyor.” Şaka yaptı, ama bu doğruydu. Açıkçası bunun önemli bir konu olduğunu düşünüyorum, ancak bu blogda hiç konuşmadığımı fark ettiğim için şaşırdım. Ash, bir yıldan fazla bir süre önce arka plan işlemesi hakkında yazdı. WP boşaltma S3 için kodladığı olağanüstü kütüphaneyi sundu ve diğer insanların kullanımı için GitHub’da bağımsız bir kütüphane olarak yayınladı. Görünen tek kişi ben değilim. WooCommerce ve Ninja formları da bunu kullanıyor.
Kütüphane iyi, ama bir sorun olduğunu anlıyorum. Her tema/eklenti, bir kuyruk paylaşmak yerine kendi arka plan işlemelerinin kuyruğunu uygularsa, aynı anda çok fazla iş çalıştırabilir ve sunucu performansını etkileyebiliriz. Giderek daha fazla tema/eklenti kendi arka planlarını işlemeye başladığından (bu kütüphaneyi kullanıyorlar veya kendi şeylerini yapıyorlar), bu sorun o kadar büyük olur. En iyi çözümün, tüm temaların/eklentilerin bir kuyruğu paylaşabilmesi ve sunucu performansını etkilemeyeceğimizden emin olabilmesi için çekirdek WordPress’e bir arka plan işlemesi elde etmek olduğunu düşünüyorum. Ve haçlı seferlerime başladı.
Presnomics’te Mike Schroder ile şiddetle sohbet ettim. Çekirdeğe çok iyi bir yol sunar: WordPress Core’un ihtiyaç duyduğu ve arka plan işlemeyi gerektiren özellikleri bulun. Başka bir deyişle, destek! Görüntüleri optimize eden şeyler, geçen yılın çekirdeği olmayı tam olarak böyle başardı: Duyarlı görüntüleri piggyback yaparak. Arka plan işleme için, geçerli görüntü işleme (OTFIP) için bir alternatif oluşturmayı önerir. Vay canına, OTFIP’in WP boşaltma S3 için de sık sık idare ettiğimiz bir sorun olduğu ortaya çıkıyor. Bu bir tür “iki kuş – bir taş” olabilir. Yıldızlar paraleldir. Anında (OTFIP) görüntü işleme sadece birkaç ay önce OTFIP hakkında yazılmıştır ve çözmekten daha fazla soruna neden olma eğiliminde olduğunu açıklar. Özet için, OTFIP tarafından çözülen temel sorun, asla kullanılmayacak görüntülerin üretimini (ve depolamasını) azaltmaktır. Her tema/eklenti, ihtiyaç duydukları görüntünün boyutunu üretmek için add_image_size () kullanıyorsa, görüntü sayısı hızlı bir şekilde artacaktır. Bana inanmıyor musun? En kayıtlı görüntü boyutuna sahip WordPress kurulumu bulmak için ekip üyeleri arasında ortaya çıkan küçük bir rekabetimiz var. Şimdiye kadar Ash 49 ile kazandı!
Açık olmak gerekirse, WordPress, WordPress kurulumuna görüntüyle yüklendiğinde çeşitli boyutlarda 49 görüntü üretti. Görüntünün bitmesini beklemek bir dakika kolaydır. Risk alacağım ve üretilen 29 görüntünün asla kullanılmayacağını tahmin edeceğim, ancak sabit sürücü alanını alıyorlar. Bu aşırı bir örnektir, ancak genellikle 20 veya daha fazla kayıtlı görüntü boyutuna sahip WordPress kurulumunu görüyoruz. OTFIP FTW Bu sorunun üstesinden gelmek için, bazı geliştiriciler temalarında/eklentilerindeki OTFIP kütüphanesini içerir ve ihtiyaç duydukları zaman ihtiyaç duydukları doğru boyutta görüntüler üretir. Örneğin, Popüler Aqua Resizer Kütüphanesi’ni kullanıyorsanız, temanızdaki/eklentinizde aşağıdaki işlevi çağırabilirsiniz: Değiştirilen görüntü henüz mevcut değilse, dosya sistemindeki orijinalin yanında yapılacak ve saklanacaktır. Kulağa hoş geliyor, ancak sayfayı açma zamanı çok uzun çünkü sayfayı yüklemeden önce görüntünün yapılmasını beklemek zorundalar. Ve bir sayfanın birçok çağrısı varsa (örneğin arşiv sayfasındaki her blog yazısı için bir tane), bu çok uzun bir bekleme ve belki de zaman aşımı olabilir. Ayrıca, görüntü boyutunu değiştirmek CPU yoğun çalıştırma ve bellektir. Peki birkaç sayfa aynı anda yüklendiğinde sunucuya ne olur? Oops. Son olarak, orijinal görüntü medya kütüphanesinden kaldırıldığında ne olacağını tahmin edin. Evet, değiştirilen görüntü geride kaldı çünkü WordPress çekirdeği bilmiyordu. Ayrıca WordPress Core, duyarlı görüntüler olmaması için SRCSET olarak değiştirilen görüntüler ekleyemez.
İhtiyacımız olan şey, sayfa açma saatini etkilemeyen, sunucu kaynaklarına dikkat etmeyen ve geçerli WordPress çekirdeği ile sorunsuz çalışan bir çözümdür. Geçen Aralık ayında WordCamp ABD Katkıda Bulunma Günü’nde doğma sürecinin kuyruğu, OTFIP’in tüm avantajlarına sahip olacak görüntü işleme kütüphanesi ile hacklemeye karar verdim, ancak olumsuz bir şey yok. Ve Voila, birkaç saat sonra görüntülerin işlenmesinin kuyruğu doğdu.
Bunu kullanmak oldukça kolaydır. Görüntü işleme kuyruğunu ve bağımlılığını yüklemek için bir dosya eklersiniz: request_once templatahh. ‘/image-processing-queue/image-pocessing-queue.php’; Daha sonra resimleri görüntülemek için tema/eklenti şablonunuzda ipq_get_get_theme_image () işlevini çağırabilirsiniz: echo ipq_get_theme_image ($ post_id, dizi (dizi (600, 600, false), dizi (1280, 1280, false), dizi (1600. 1600, 1600 false),), dizi (‘sınıf’ => ‘başlık banner’))); Tüm görüntüler yapıldıysa, sonuçlar şöyle görünecek:
Kütüphane iyi, ama bir sorun olduğunu anlıyorum. Her tema/eklenti, bir kuyruk paylaşmak yerine kendi arka plan işlemelerinin kuyruğunu uygularsa, aynı anda çok fazla iş çalıştırabilir ve sunucu performansını etkileyebiliriz. Giderek daha fazla tema/eklenti kendi arka planlarını işlemeye başladığından (bu kütüphaneyi kullanıyorlar veya kendi şeylerini yapıyorlar), bu sorun o kadar büyük olur. En iyi çözümün, tüm temaların/eklentilerin bir kuyruğu paylaşabilmesi ve sunucu performansını etkilemeyeceğimizden emin olabilmesi için çekirdek WordPress’e bir arka plan işlemesi elde etmek olduğunu düşünüyorum. Ve haçlı seferlerime başladı.
Presnomics’te Mike Schroder ile şiddetle sohbet ettim. Çekirdeğe çok iyi bir yol sunar: WordPress Core’un ihtiyaç duyduğu ve arka plan işlemeyi gerektiren özellikleri bulun. Başka bir deyişle, destek! Görüntüleri optimize eden şeyler, geçen yılın çekirdeği olmayı tam olarak böyle başardı: Duyarlı görüntüleri piggyback yaparak. Arka plan işleme için, geçerli görüntü işleme (OTFIP) için bir alternatif oluşturmayı önerir. Vay canına, OTFIP’in WP boşaltma S3 için de sık sık idare ettiğimiz bir sorun olduğu ortaya çıkıyor. Bu bir tür “iki kuş – bir taş” olabilir. Yıldızlar paraleldir. Anında (OTFIP) görüntü işleme sadece birkaç ay önce OTFIP hakkında yazılmıştır ve çözmekten daha fazla soruna neden olma eğiliminde olduğunu açıklar. Özet için, OTFIP tarafından çözülen temel sorun, asla kullanılmayacak görüntülerin üretimini (ve depolamasını) azaltmaktır. Her tema/eklenti, ihtiyaç duydukları görüntünün boyutunu üretmek için add_image_size () kullanıyorsa, görüntü sayısı hızlı bir şekilde artacaktır. Bana inanmıyor musun? En kayıtlı görüntü boyutuna sahip WordPress kurulumu bulmak için ekip üyeleri arasında ortaya çıkan küçük bir rekabetimiz var. Şimdiye kadar Ash 49 ile kazandı!
Açık olmak gerekirse, WordPress, WordPress kurulumuna görüntüyle yüklendiğinde çeşitli boyutlarda 49 görüntü üretti. Görüntünün bitmesini beklemek bir dakika kolaydır. Risk alacağım ve üretilen 29 görüntünün asla kullanılmayacağını tahmin edeceğim, ancak sabit sürücü alanını alıyorlar. Bu aşırı bir örnektir, ancak genellikle 20 veya daha fazla kayıtlı görüntü boyutuna sahip WordPress kurulumunu görüyoruz. OTFIP FTW Bu sorunun üstesinden gelmek için, bazı geliştiriciler temalarında/eklentilerindeki OTFIP kütüphanesini içerir ve ihtiyaç duydukları zaman ihtiyaç duydukları doğru boyutta görüntüler üretir. Örneğin, Popüler Aqua Resizer Kütüphanesi’ni kullanıyorsanız, temanızdaki/eklentinizde aşağıdaki işlevi çağırabilirsiniz: Değiştirilen görüntü henüz mevcut değilse, dosya sistemindeki orijinalin yanında yapılacak ve saklanacaktır. Kulağa hoş geliyor, ancak sayfayı açma zamanı çok uzun çünkü sayfayı yüklemeden önce görüntünün yapılmasını beklemek zorundalar. Ve bir sayfanın birçok çağrısı varsa (örneğin arşiv sayfasındaki her blog yazısı için bir tane), bu çok uzun bir bekleme ve belki de zaman aşımı olabilir. Ayrıca, görüntü boyutunu değiştirmek CPU yoğun çalıştırma ve bellektir. Peki birkaç sayfa aynı anda yüklendiğinde sunucuya ne olur? Oops. Son olarak, orijinal görüntü medya kütüphanesinden kaldırıldığında ne olacağını tahmin edin. Evet, değiştirilen görüntü geride kaldı çünkü WordPress çekirdeği bilmiyordu. Ayrıca WordPress Core, duyarlı görüntüler olmaması için SRCSET olarak değiştirilen görüntüler ekleyemez.
İhtiyacımız olan şey, sayfa açma saatini etkilemeyen, sunucu kaynaklarına dikkat etmeyen ve geçerli WordPress çekirdeği ile sorunsuz çalışan bir çözümdür. Geçen Aralık ayında WordCamp ABD Katkıda Bulunma Günü’nde doğma sürecinin kuyruğu, OTFIP’in tüm avantajlarına sahip olacak görüntü işleme kütüphanesi ile hacklemeye karar verdim, ancak olumsuz bir şey yok. Ve Voila, birkaç saat sonra görüntülerin işlenmesinin kuyruğu doğdu.
Bunu kullanmak oldukça kolaydır. Görüntü işleme kuyruğunu ve bağımlılığını yüklemek için bir dosya eklersiniz: request_once templatahh. ‘/image-processing-queue/image-pocessing-queue.php’; Daha sonra resimleri görüntülemek için tema/eklenti şablonunuzda ipq_get_get_theme_image () işlevini çağırabilirsiniz: echo ipq_get_theme_image ($ post_id, dizi (dizi (600, 600, false), dizi (1280, 1280, false), dizi (1600. 1600, 1600 false),), dizi (‘sınıf’ => ‘başlık banner’))); Tüm görüntüler yapıldıysa, sonuçlar şöyle görünecek: