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ı
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:
- Vernikten önce oturmak için bir SSL sonlandırıcısı yükleyin (örn. Stud / pound / nginx)
- Varnish'i sunucuya yükle
X-Forwarded-For
Doğru yapılandırdığınızdan emin olun
- Mağazanıza bir Vernik modülü takın
- 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.