Magento CE üzerinde Vernik kullanmak için gerekli değişiklikler


14

Varnish'in bir Magento sitesini önbelleğe almasına izin vermek için hangi değişikliklerin yapılması gerektiğine dair iyi çalışma örnekleri bulmaya çalışıyorum.

İdeal olarak, devre dışı bırakma / etkinleştirme ve onları nerede arayacakları gibi görevlerin bir listesini istiyorum. Bu değişikliklerin çalışmak için tasarlandığı Varnish yapılandırmasına sahip olmak da iyi olur.

Magento performans rehberi Vernik hakkında çok konuşuyor, bu yüzden daha önce yapıldığını biliyorum, ancak aslında nasıl çalıştıracağını açıklamıyor.

Yanıtlar:


2

Burada resmi bir modül var . İhtiyacınız olan her şeyi içerir (vernik yapılandırması, modül, ...)


19

Vernik sizin için uygun mu?

Vernik, Magento performansının hepsi ve sonu değil. Botlardan ve pencere alışverişlerinden gelen yükü dengelemek harika - ancak mağazanızı daha hızlı hale getirmek için ilk çağrı limanınız olmamalıdır.

Aslında, Vernik uygulamak mağazanızdaki son performans değişikliği olmalıdır . Magento'nun sayfa yükleme sürelerini onsuz yayınlayabildiğini gördüğünüzde bırakın (ör. <600ms sayfa yükleme süreleri).

Mağazanızın hala hızlı olması gerekiyor

Vernik, önbelleği kullanıma hazırlamak için en az bir sayfa yüklemesi gerektirdiğinden, önbelleğe alınmamış performansınızın hala çok iyi olması gerektiği anlamına gelir. Benzersiz URL'lerin büyük bir çoğunluğu (katmanlı gezinme isabetleri, arama sorguları vb.) Aşağıdakilerden biri olmadıkça Varnish'ten asla sunulmayacaktır:

a) TTL'leriniz o kadar yüksek ki, 4 gün önceki bir arama sorgusu bugün hala geçerlidir
b) kadar geniş ki, URL'ler çok kısa sürede dolduruluyor

Ayrıca, her mağazanın Vernik'e borç vermediğini de düşünmelisiniz . Kullanıcıları, müşteri yolculuklarında erkenden kişisel bir oturum oluşturmaya teşvik eden (ör. Oturum açma, sepete ekle vb.) Varnish'in sonunda gereksiz olacağı anlamına gelir.

Örneğin, özel alışveriş siteleri kullanıcı girişlerini sette teşvik eder, ancak bunu yaparken Varnish'in gerçekten önbelleğe alınabilen benzersiz olmayan içeriğe sahip olmadığı anlamına gelir. Bu yüzden isabet oranlarınız büyük ölçüde düşük olacak ve Vernik kullanmanın hiçbir faydası olmayacak.

Yeni içerik veya daha yüksek isabet oranları

Vernik Vuruş Oranı
Resim magestack.com'un izniyle

Verniği etkili bir şekilde kullanmak, eski içerik ile sitenizdeki ziyaretçi sayısı arasında bir denge kurmakla ilgilidir.

Meşgul bir siteniz varsa - oranlar daha düşük TTL'lerle kurtulabilir ve yine de yüksek bir Vernik isabet oranına sahip olabilirsiniz - ve aynı zamanda daha düşük TTL'lere sahip olmaya devam edebilirsiniz - böylece daha taze içerik. Böylece hisse senedi / fiyat değişiklikleriniz hızlı bir şekilde yansıtılır ve önbellek sürekli olarak ayak hacminden emilir.

Trafiği az olan bir siteniz varsa - o zaman bir uzlaşma yapmanız gerekecektir. Daha yüksek bir isabet oranı sağlamak için TTL'lerinizi artırın veya güncel içeriğe sahip olun. Her ikisine de sahip olamazsınız. Evet, bir tarama / örümcek aracını sürekli olarak çalıştırabilirsiniz - ancak bunun tüketeceği kaynaklar ve taranabilecek net hacim veya URL'ler (genellikle küçük mağazalar için on binlerce ), bunun etkili olmadığı anlamına gelir. Bu nedenle, genellikle daha küçük mağazalar, iyi bir FPC uzantısından ve yüksek düzeyde optimize edilmiş bir sunucu yapılandırmasına sahip olmaktan daha fazla yararlanır .

Ancak elbette, kullanıcılar giriş yapmış olsa bile Vernik kullanabilirim, kullanıcı başına önbellek veya ESI'lar ne olacak?

ESI'larının

ESI'ler, içeriği önbellekte tutabilmek ve yine de sayfada dinamik bloklara sahip olabilmek için mükemmel bir yardımcı programdır. Ancak etkili bir şekilde kullanmak için, geri aramaların miktarını en aza indirmeniz gerekir. Bu işlem için temel olarak kullanabileceğiniz küçük bir başlangıç modülü vardır - içindeki güvenlik deliklerini sıktığınızdan emin olun, varsayılan olarak güvensizdir - hangi düzen tutamaçlarını yükleyebileceğiniz / yükleyemeyeceğiniz konusunda herhangi bir kısıtlama yoktur

Magento önyükleme her yüklendiğinde, bir koleksiyon yüklemeden / bir blok oluşturmadan önce yaklaşık 200 ms'lik bir performans cezasıyla gelir. 3x'ten fazla ESI'nız varsa, olasılıklar Dinamik içerik için Varnish + ESI'leri kullanarak yalnızca Varnish'i atlayıp isteği doğrudan Magento'ya iletmekten daha yavaş sayfa yükleme süreleri.

Bu nedenle ESI'leri gerçekten etkili bir şekilde kullanmak için, birden fazla isteği tek bir istekte birleştirebilmeniz gerekir.

Örneğin, 20 ürünü listeleyen bir kategori görünümü sayfasının doğru stok seviyelerini göstermesi gerekir. Böylece sayfadaki her blok için ESI kullanırsınız. Bu 20x ESI stok talebi olacaktır. Stok talepleri çok hafif olmakla birlikte, 20x'inin aynı anda çalıştırılması performansı bozar. Bunun yerine, 20 ürünün tüm bloğuna / koleksiyonuna hizmet edebilir ve sadece 1x isteğini alabilirsiniz. Ancak koleksiyonu yüklemek ve oluşturmak muhtemelen sayfadaki en yavaş öğedir - bu yüzden çok fazla kazanmadınız.

ESI'leri etkili bir şekilde kullanmak için uygun bir planlama ve yürütme gerekir, yoksa Vernik kullanmamaktan daha yavaş bir siteye sahip olursunuz.

Önbellek kullanıcı başına

Sonra kullanıcıya özgü bir önbellek kullanmanın alternatifi vardır. Çok düşük trafikli bir siteniz yoksa bu kötü bir fikirdir. İsabet oranınız son derece düşük olacaktır - bir ziyaretçinin daha önce bulundukları sayfaya ulaşma oranları çok düşük olduğundan. Ve her müşteri için, bu 6Kb sayfası Vernik depolama bölmenizde giderek daha fazla yer kaplayacak.

Örneğin, Vernik'e 1 GB ayırdıysanız. Kullanıcıların ziyaret başına 8 sayfa görüntülediği tipik bir siteyle, bu sayfaların ortalama 6 tanesi benzersiz olacaktır. Bu, 1 MB depolama alanı başına 28 ziyaretçi demektir. Ardından, resimlerinizdeki faktör, CSS ve JS - bunlar (neyse ki) yaygın olacaktır, ancak yine de kullanılabilir depolama alanınızın iyi bir 7-800MB'ını işgal edecektir. Bu, size 200 MB depolama alanı ve 5.600 benzersiz ziyaretçi için yeterli önbellek bırakır.

Umurumda değil, sadece Vernik istiyorum

Tamam, o zaman aşağıdakileri yapmanız gerekir:

  1. Vernikten önce oturmak için bir SSL sonlandırıcısı yükleyin (örn. Stud / pound / nginx)
  2. Varnish'i sunucuya yükle
  3. X-Forwarded-ForDoğru yapılandırdığınızdan emin olun
  4. Mağazanıza bir Vernik modülü takın
  5. 3. taraf uzantılarını hariç tutmak için Vernik VCL'lerinizi ayarlayın

İlk 3 puan bu cevabın kapsamı dışında olduğundan, bunu ele almak için kendinize bırakacağım. Nokta 4 çocuk oyunudur ve nokta 5 ile okumaya devam edin.

Vernik uygulamasıyla ilgili en önemli şey, asla önbelleğe alınmaması gereken içeriği asla önbelleğe almamanızı sağlamaktır .

Örneğin.

  • Ödeme ağ geçidi geri çağrıları
  • Sepete genel bakış
  • Müşteri hesabıma genel bakış
  • Checkout (ve ilgili Ajax çağrıları)

vb.

Temel Magento URL'leri için, Vernik'te kaçabileceğiniz oldukça standart bir URI listesi vardır:

admin|checkout|customer|catalog/product_compare|wishlist|paypal

Ancak, çalıştırdığınız ve özel yolları, yönlendiricileri ve ad alanları olan tüm özel / 3. taraf uzantılarını da göz önünde bulundurmanız gerekir. Ne yazık ki, bu uzantılardan hangi URL'lerin önbelleğe alınabileceğini ve önbelleğe alınamayacağını bilmenin kolay bir yolu yoktur. Bu nedenle, her birini ayrı ayrı değerlendirmeniz gerekir.

Kural olarak, Verniği her yapılandırdığımızda, işgal edip oradan gidebilecekleri ilgili rotaları, yönlendiricileri ve ad alanlarını belirleyerek başlayacağız. Bunu SSH ile yapıyoruz:

grep -Eiroh "<frontName>.*</frontName>" community | sed "s/<frontName>//gI;s#</frontName>##gI" | sort -u
grep -A10 -ir "<rewrite>" community | grep "<from>"
grep -A5 -ir "<routers>" community 
grep -Eiroh "<frontName>.*</frontName>" local | sed "s/<frontName>//gI;s#</frontName>##gI" | sort -u
grep -A10 -ir "<rewrite>" local | grep "<from>"
grep -A5 -ir "<routers>" local 

Bu size kesin bir URL listesi vermez - ancak neredeyse size kesinlikle bir başlangıç ​​verir.

Önbelleğe alınması gerekmeyen içeriği asla önbelleğe almanın ne kadar önemli olduğunu vurgulayamayız. Sonuçlar felaket olabilir.

Özetle

Diğer tüm Magento sunucu performans optimizasyonlarında olduğu gibi, doğru bir şekilde uygulanan ve ayarlanan gerçekten faydalar sağlayabilir. Ancak, yazılımı düzgün bir şekilde yapılandırmadan bırakmak sadece mağazanızı daha hızlı değil, aynı zamanda daha yavaş, daha güvensiz ve daha az güvenilir hale getirecektir.


@SimonJGreen. Yanıttan memnun kaldıysanız, kabul edildi olarak işaretlediğinizden emin olun. Beta, mezun olmak için daha kabul edilmiş cevaplara ihtiyaç duyar.
Ben Lessani - Sonassi

Cevap için teşekkürler. Peki ya 'Apache ve Vernik yapılandırma' adımı? Sadece 'Vernik yükleyin' yeterli değildir.
Yaroslav Rogoza

Demek istediğim, Verniği ilk başta bir çözüm olarak görmemenizdi. Vernik, hızlı sitelerin yavaş siteleri değil daha az kaynak kullanmasını sağlamaktır . İnsanların çoğu bunu yanlış nedenlerle kullanıyor. Uygun konfigürasyonun 1 beden herkese uymadığından bahsetmiyorum . Altyapının daha büyük resmine nasıl uyduğunu, SSL sonlandırıcınızla nasıl etkileşime girdiğini, yük dengelemesini nasıl ele aldığınızı, TTL tanımlarınızın ve hariç tuttuğunuz şeyin ne olduğunu hesaba katmalısınız. Düşük trafiğe sahip siteler için GEREKLİ DEĞİLDİR, primer tutmak için ayakları yoktur.
Ben Lessani - Sonassi

Bir Mac'te Ben'in arama komutlarını kullanan herkes için sed'in OSX sürümünün farklı bayraklar gerektirdiğini unutmayın. Gnu-sed yüklerseniz burada gösterildiği gibi çalışır.
benz001
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.