Oturum Tabanlı Cache Çözüm Canlı mı?

3 Cevap php

Bunun yerine bir dosya tabanlı önbelleğe alma çözüm oluşturmak yerine, oturum değişkenleri önbelleğe alınan öğeleri saklamak için uygulanabilir olup olmadığını merak ediyorum? Bir kez kullanıcı başına olduğundan, veritabanına bazı ekstra aramaları azaltabilecek bir sayfa daha kullanıcı ziyaretleri daha eğer. Ama bu çabaya değer mi?

3 Cevap

Önbelleklediğiniz veri (willing to cache) kullanıcı bağlı değilse, neden oturumda saklamak istiyorsunuz ... bir kullanıcıya bağlı olan?

Göz önüne alındığında oturumları genellikle dosyalarında saklanır, bu dosyaları kendiniz kullanarak comparaison şey optimize.

Eğer sitede 10 kullanıcı varsa ve siz önbellek 10 kez aynı veri var mı? Ben bu şeyleri önbelleğe için en iyi yol olduğunu sanmıyorum ;-)

Tüm kullanıcılar fo aynı veriler için, ben gerçekten bir kullanıcı ya da kullanıcı grubu için belirli veri, muhtemelen oturumda saklamak olmaz için bile (bu dosya tabanlı olabilir ya da olmayabilir, başka bir çözüm ile gitmek istiyorum - eğer dışında çok küçük, belki)

Hakkında bakabilirsiniz bazı şeyler:

Sonraki soru: önbelleğe için ne gerekiyor? Ne kadar süre için? ama bu başka bir sorun var ve sadece o cevap verebilir ;-)

Bu olabilir, ama bu önbellek yanı sıra, diğer bazı durumlarda için çalışıyoruz ne büyük ölçüde bağlıdır.

  • Bilgi değiştirmek olası mıdır?
  • Biraz modası geçmiş bilgiler gösterilir eğer bir sorun var mı?
  • Sorgu veritabanında yüklediği yük ne kadar ağır olduğunu?
  • Veritabanı sunucusu gecikme nedir? (Yerel ağ üzerinde bir sorun olmamalı)
  • Bilgileri bir kullanıcı bazında veya genel olarak tüm uygulama için önbelleğe olmalı?
  • Ilgili veri miktarıdır
  • vb

Performans kazancı bazı durumlarda önemli olabilir. Belirli bir ASP.NET / SQL Server sitede bir faktör 3 ile web sunucusunda CPU yükü (!) (Uygulama düzeyinde) basit bir önbelleğe alma mekanizması azaltılır ekleyerek, üzerinde çalıştığım ve aynı zamanda bir sürü engelledi Belirli bir tablo erişim veritabanı zaman aşımı sorunları.

Ben PHP ciddi bir şey yaptık çünkü bir süre oldu, ama tek seçenek oturum düzeyinde bunu yapmak için var olduğunu düşünecek. Yukarıda benim düşüncelerin çoğu ancak hala geçerlidir. Çaba gelince; bu kod yeterince yapılandırılmıştır varsayarak, uygulamak için çok az çaba almalıdır.

Oturum sadece gerçekten kullanıcı, belirli verileri için kesinlikle kullanılmalıdır. Eğer çoklu oturum ortak olmalıdır şeyleri önbelleğe için kullanarak ediyorsanız, gereksiz çok veri çoğaltma ediyoruz. Neden sadece (senin endişe DB gidiş gelişler ise bellekte önbelleğe alınmış verileri saklamak olacak beri, yerine SQL daha InProcess kullanabilirsiniz) ASP.NET ile birlikte Cache kullanmak değil