WP Boşaltma S3 ile WordPress siteniz için yükleme süresini artırın: Vaka Çalışması

Lezzetli beyinlerde çalışmakla ilgili en güzel şeylerden biri, kullandığım ve işten hoşlandığım ürünler üzerinde çalışmak. Ekibe katılmadan ve hala her gün özel bir sitede ve bir yan projede kullanmadan çok önce bir WP Migrate DB Pro Müşterisiyim. Ancak, site medya dosyalarını Amazon S3 ve DigitalOcean’a taşımak için genellikle diğer eklentilerimiz olan WP boşaltma ortamlarımızı (daha önce WP boşaltma S3) kullanmam gerekmiyor. Haziran ayında, yeni bir sunucuya vererek, etki alanını değiştirerek ve yeniden markalaşma uygulayarak eşimin öğretim kaynağı web sitesinde çalışmak için biraz zaman harcadım. Bu yıl odak noktası, siteyi geliştirmek ve ödeme yapan üye sayısını artırmaktır. Artan dönüşümün bir parçası olarak, sitenin hızını ve performansını artırmak istiyorum ve çok sayıda PDF ve görüntü ile WP boşaltma S3 ve eklenti varlıkları çekme, bu tür optimizasyon için kullanım için mükemmel eklentilerdir.
WP neden S3’ü boşaltın? Öyleyse neden bir eklenti kullanıyorsunuz? Medyanızı Cloudfront tarafından sunulacak Amazon S3’e sökmenin, gönül rahatlığı için rezervlere gelen, paradan tasarruf eden ve sayfanın yükleme süresini artıran bir takım faydaları vardır. Ortamı S3’e kopyalayıp sunucunuzda bırakırsanız, WP-Content/Yükleme Yedeklemenizi etkili bir şekilde yedek planınızın bir parçası haline getirirsiniz. S3 depolama maliyetlerinden daha pahalı olabilecek barındırma alanından tasarruf etmek için S3’e indirildikten sonra sunucudan dosyaları silme seçeneğini de kullanabilirsiniz.
Sitenin medyasını ve varlıklarını (varlık çekme eklentisiyle) CloudFront’tan sunmak, sunucunuz sunucuya talebi azaltacak, CPU ve IO etkinliğini azaltacaktır.CDN CloudFront, en yakın konumdan kullanıcıya varlıkları sunucunuzun konumundan daha hızlı göndereceğinden, sayfa yüklemesini daha hızlı, kullanıcılar için daha iyi deneyimleyen ve Google tarafından düşünülen metrikleri artıran talepler daha hızlı olmalıdır.Büyük hızda açılmada veya artışta büyük bir azalma görmeyeceğiz;Bununla birlikte, bu kılavuzdaki diğer tüm performans iyileştirmelerini yaptıktan sonra, bu yaklaşım, her milisaniye önemli olduğunda hızda daha değerli bir artış elde etmek için nispeten basit bir yöntemdir.
Dalış yapalım. Yükleme Bu site besteci tarafından yönetildiğinden, WP boşaltma S3 ve eklenti varlıkları çekme yükleme çok kolaydır, çünkü bestecinin özel olarak premium eklentilerimiz için desteğini tanıttığımız için çok kolaydır. WP boşaltma S3 etkinleştirildikten sonra, ayarları Ayarlar> Boşalt S3 aracılığıyla yapılandırabilirsiniz. IAM kullanıcılarımı site için kullanılan kovaya sınırlı erişimi düzenledim ve WP-Config.php dosyamdaki erişim anahtarımı ve sırımı tanımladım. Bu ayrıntıyı veritabanından kaydetmek için yapılandırma dosyasındaki kovayı da tanımladım. Baskı Play Learn sitesi, PDF indirmelerini yönetmek için kolay dijital indirmeler kullanır ve varsayılan olarak tüm indirmeler, HTAccess veya Nginx kuralları ile sınırlandırılabilmesi için WP-Content/Uploads/EDD’de saklanır. WP boşaltma S3, S3’e yüklendiğinde dosyaları özel olarak ayarlamak için EDD ile bir entegrasyona sahiptir. Ancak, mevcut kitle iletişim araçlarını S3’e sökerken, indirme dosyaları kişisel olarak ayarlanmaz, bu nedenle erişim seviyesini değiştirmek ve EDD/::
işlev ppl_add_edd_dir_to_path ($ args) {if (false === strpos ($ args [‘sourceFile’], ‘yükleme/edd/’) || false! == strpos ($ args [‘anahtar’], ‘ /edd /’)) {return $ args;} $ args [‘Key’] = str_replace (‘/uploads/’, ‘/uploads/edd/’, $ args [‘Key’]);Dönüş $ args;} add_filter (‘as3cf_object_meta’, ‘ppl_add_edd_dir_to_path’, 10, 2);işlev ppl_make_edd_objects_private ($ acl, $ veri, $ post_id) {if (‘private’ === $ acl) {return $ ACL;} $ file_path = get_attached_file ($ post_id, true);if (false === Strpos ($ file_path, ‘yükleme/edd/’)) {return $ Acl;} $ parts = patlama (‘.’, $ file_path);if (‘pdf’! == $ parçalar [1]) {return $ Acl;} dönüş ‘özel’;} add_filter (‘as3cf_upload_acl’, ‘ppl_make_edd_objects_private’, 10, 3);Yukarıdaki kod, site boyunca tweak kodunu kaydetmek için kullandığım WP-Concent/Mu-Plugins/site.php dosyasına eklenir.
Mevcut tüm medya kütüphaneleri S3’e aktarıldıktan ve S3 ayarlarına kopyalama dosyaları gelecekte yüklemeler için etkinleştirildikten sonra, S3’ten dosya sunmayı düşünmek istiyoruz.Dosyanın doğrudan S3’ten sunulmaması ve CDN’nin avantajlarından yararlanabilmemiz için bir CloudFront dağılımı hazırlayalım.Bu, CloudFront dağıtım ayarlarını ve CloudFront’un HTTPS’de özel bir etki alanı ile nasıl kullanılacağını açıklamak için en iyi belgedir, çünkü cdn.printplaylearn.com’u kullanmak istiyorum, SDSKH43433K4LK.cloudfront.net gibi kötü bir varsayılan CloudFront URL’si değil.Eklenti Çekme Varlıkları Bulmacanın son kısmı, JS, CSS ve görüntü dosyaları gibi tüm site varlıklarının CloudFront tarafından da sunulmasını sağlamaktır.Bunu başarmak için Addon Varss Pull’u kullanabiliriz ve ayarlar oldukça kolaydır.Eklenti takıldıktan ve etkinleştirildikten sonra, yararlı hazırlık adımlarından geçebilir veya manuel olarak yapılandırabilirsiniz.

Medya kütüphanemle aynı CDN alt alanında çalışan aynı CloudFront dağılımını kullanmak istiyorum, bunun iki dağıtıma kıyasla bir performans avantajı var. İki DNS girişi (örneğin medya ve varlıklar için CDN.. Varlıklar için) iki HTTPS bağlantısı anlamına gelir, ancak çoğullama HTTP/2 asenkronlama bağlantısı kullanılarak bir bağlantıyla bir girişe indirgeme anlamına gelir. Tüm varlıkların tek bir alt alan altında olması daha iyidir. Medya kütüphaneniz ve varlığınız için aynı dağıtımı yapılandırmak için bu belgeye bakın. Benim düşüncem, sitenin yerel gelişiminin, evreleme sitesinin ve elbette sitenin üretim sürümünün bir kopyasını gerçekleştirmek, ancak geliştirme ve ilk testten sonra geliştirme sitemi veya evrelemeyi test etmeyi istemiyorum S3 görüntüleri. Medyayı önceki ortamda ele almak için stratejilerden bahsettik ve burada sadece erişim anahtarları ve AWS sırları yapılandırılmış üretim siteleriyle ‘Erişim Olmadan’ stratejisi seçtim. Diğer ortamlarda dağıtılacak yeni bir ortam yoktur, ancak mevcut medyaya CloudFront tarafından sunulacaktır.
Daha önce ‘sunucudan silme’ ayarladım, yani yerel dosyanın söküldükten sonra silindiği anlamına geliyor. Teoride bu iyi, VP’lerimden binlerce PDF ve ilgili görüntüleri silebilirim (bu yüzden sitenin büyümesiyle disk alanını artırmaya devam etmem gerekmiyor) ve her şeyi S3’e koyuyorum. Ancak, bunu yapmak için bir kayıp var. Bazı görüntü manipülasyon eklentileri görüntü dosyalarına erişim gerektirir ve eklenti zamanın% 99’unu gerçekleştirmesine rağmen, sorun yaşama olasılığı vardır. Benim için PDF disk odasındaki en büyük tahliye ve asla düzenlenmeyecek, bu yüzden diğer tüm dosyaların sunucuda bırakılmasını sağlamak için eklenti filtrelerinden birini kullanabilirim: = Patlama (‘.’, $ Dosya); if (‘pdf’! == $ parçalar [1]) {return true; } dönüş $ check; } add_filter (‘as3cf_parersve_file_from_local_removal’, ‘ppl_parersve_non_pdf_files_on_server’, 10, 2); Bulduğum son şey, CloudFront’tan varlıklar sunarken, özellikle temamdaki Web yazı tipi dosyalarıyla ilgili olan ve çapraz köken kaynak paylaşımına (CORS) tabi olan bazı konsol hatalarıydı. Burada açıklandığı gibi Nginx yapılandırmama basit bir snippet eklenmiştir.
Sonuçlar Eklentiyi kullanmadan önce, sonuçları karşılaştırmak ve daha sonra karşılaştırmak için birkaç araç kullanarak birkaç test testi yaptım. Her şeyden önce, 100 istek ile Sitedeki sayfaya 10.000 istek göndermek için Apache tezgahını kullanıyorum: $ ab -n 10000 -c 100 https://printplaylearn.com/resources/ Kullanım olup olmadığını görmek istiyorum Sitedeki CPU’nun (özellikle Nginx işleminden, site tam sayfalama önbelleğini etkinleştirdiği için) değişiklikten sonra. Bu, dijital okyanus raporlamasının artışıdır. Eklenti uyguladıktan sonra CPU dalgalanmasını ~% 5 daha düşük görebilirsiniz: Eklenti ile sayfanın yükleme hızının artıp yükselmediğini test etmek için siteseed.io kullanıyorum. Ancak site Londra’daki DigitalOcean Damlalarında olduğu ve İngiltere’de yaşadığım için, eklentiden önce sitenin varlıklarına olan talep her zaman hızlı olacak çünkü onu makinemden çalıştırmak adil bir test olmayacak. perspektif. Bu yüzden testi çalıştırmak için hemen New York’ta bulunan yeni bir sunucu oynadım. Sunucuya bir Docker yüklemem ve testi çalıştırmak için Docker yöntemini kullanmam gerekiyor: $ Docker Run -shm -Size = 1G –rm -v “$ (PWD)”:/Sitespeed.io Sitespeedio/sitespeed.io: 7.3.5 https: //printplaylearn.com/resources/ İki sonucu inceledikten sonra, eklentiyi uyguladıktan sonra açılış süresinin ortalama 0.78 saniye azaldığını buldum!

admin

Bir Cevap Yazın

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