Datatable Kullanmadan Tabloları Hızlı Okumak
Datatable kullanmadan veritabanında yüklü miktardaki veriyi hızlı birşekilde çekip listelemenin navite kodlama ile bir yöntemi var mıdır ?
Evet, "veritabanı kullanmadan veritabanındaki veriyi hızlı bir şekilde çekip listelemenin" bir yolu var: Cache'lemek.
- Listeleme yapacağınız sayfaya girildiğinde bir kontrol yapmalısınız: Bu liste cache'lenmiş bir json dosyasında mevcut mu?
- Liste henüz cache'lenmemişse veritabanına bağlanıp büyük veriyi çekeceksiniz ve bir json dosyasına yazıp kaydedeceksiniz.
- Liste cache'lenmişse veritabanına hiç bağlanmayıp doğrudan json dosyasını döndüreceksiniz.
Sayfaya ilk giren talihsiz kişi veritabanına bağlanılıp cache'lenmesini sağlayacağı için biraz bekleyecek. Ama sonraki kişiler veriyi doğrudan json dosyasından alacakları için daha hızlı sonuç alacaklar.
Tabi burada önemli noktayı kaçırmamak lazım: - Veritabanından anlık olarak doğru veri okumanız gerekiyorsa bu yöntemi kullanamazsınız. Çünkü herkes son cache'lediğiniz veriyi görür.
- Verinin ne zaman cache'leneceğini ayarlamalısınız. Mesela son cache'lemenizin üstünden 2 saat geçmişse yeniden cache'lemeniz gerekiyor olabilir. Veya cache'lemeyi tamamen ayrı bir sayfadan sağlayabilirsiniz. Mesela yönetim panelinden bu veritabanı tablosunu etkileyecek bir değişim yapıldığında yeniden cache'leme yapılmasını sağlayabilirsiniz. Veya tüm değişiklikler yapıldıktan sonra bir "Cache'le" butonuna basılmasıyla birlikte bu işlemi yaptırabilirsiniz. İşin algoritması, verinin değişim sıklığına veya canlı verinin görüntülenme mecburiyetine göre değişir.
Bu cache'leme işlemini daha da üst seviyeye taşıyıp bütün bir sayfayı cache'leyebilirsiniz. Mesela "Yeni Ürünler" sayfasına ilk girişte PHP ile bu sayfayı oluşturduktan sonra çıktıyı bir html dosyası olarak kaydedersiniz ve eğer böyle bir html dosyası varsa doğrduan bu dosyanın görüntülenmesini istersiniz. Böylece sayfa her istekte yeniden render edilmemiş olur.
Sözün özü, cache'leme mekanizmalarını araştırmalısınız. Eğer bir framework kullanıyorsanız (Codeigniter, Laravel... gibi) bu tip mekanizmalar zaten framework içinde mevcuttur ama birkaç düzenlemeyle aktive edilmesi gerekir.