2016-03-24 21 views
1

1 milyona kadar ürüne sahip bir e-ticaret sitem var ve site birçok bölgede. Her ürün sayfasında DB'ye yaklaşık 10-15 sorgu, url ile ürün almak, ürün kategorisi almak ve ürün formatı almak gibi şeyler vardır. Currenly, dosya tabanlı önbellekleme kullanarak imkansızdır ve ürün sayfasında hiçbir şey önbelleğe almaz.Laravel çok sayıda sorguyu önbelleğe alıyor

Sorun, ürün sayfalarının, DB'ye yapılan çok sayıda sorgu anlamına gelen çeşitli tarayıcılar/botlar için hedefleridir. Ayrıca, bir ürün sayfasını önbelleğe alırsam, bu sayfaların tüm sayfaları hedeflediğinden 1 saat boyunca o zamana rastlanmasının olası olmadığını söyler. Ayrıca farklı bölgelere (farklı alan adları) sahip olduğumdan, sayfaların sayısının bölge sayımına göre zamanlaması anlamına gelir (5-10).

Bu yüzden, önbelleğe alma hakkında fikirlerim yok. Tüm bu sorguları sonsuza kadar (zaman sınırı olmadan) önbelleğe almayı ve ürün değişiklikleri hakkında bir şey olduğunda önbelleği değiştirmeyi düşündüm. Bu gitmek için bir yol mu? Laravel, önbelleğe alınan her sorgu için bir önbellek dosyası oluşturur mu? Evet ise, dosya sayısı bir sorun olabilir.

Ayrıca redis kullanmayı düşündüm. Ama sanırım o kadar çok anahtarı önbelleğe alırken hafızam tükenecek? Herhangi bir fikrin Bunu önbelleğe alma konusunda nasıl gitmeliyim? Şimdiden teşekkürler.

Edit1: REDIS ile html önbelleğe alma konusunda

Düşünce. Böylece ürün fiyatını ve html'sini önbelleğe alabiliyordum. Önbellek için ne kadar belleğe ihtiyacım olursa olsun, bazı html değeriyle 10-20 milyon tuşa değinir?

+0

Redis'i kullanabilirsiniz. – nextt1

cevap

0

Bazı önbelleğe alma fikirler:

nginx önbellek tüm HTML sayfası insanlar oturum değilse

4 daha VPS almak ve her birinde memcache başka bir şey koymak ve. Tüm sorgularınızı memcache. Tüm querileri önbelleğe almak için yeterli belleğe sahip oluncaya kadar daha fazla sunucu eklemeye devam edin.

4 tane daha VPS alın ve her birine mysql koyun ve sorgu önbellekleme için kullanılabilir tüm belleği kullanın. Bazı ürünlere yönelik talepleri belirli makinelere yönlendirmek için sharding (master slave değil) kullanın. tüm veriler sorgu önbelleklerinde tutulana kadar makineler eklemeye devam edin

Sistemi, önbelleğe alınabilir hızlarda çalışmasını gerektirmeyecek şekilde yeniden yazın. Önbellekleme, daha yüksek hız için kullanıldığında, daha yüksek hız için kullanıldığında en iyi şekilde çalışır.

İlgili konular