Merhaba arkadaşlar,
datatable ajax ile veri listeliyorum veritabanında 750 civarı veri var müşteri sayfalamayı istemiyor aynı anda 750 veride çıksın istiyor haliyle 1-2 saniyelik bir gecikme oluyor. Bunu daha fazla hızlandırmak için aklıma bir yol gelmedi sizlerin bu konuda fikri varmı.
PHP ile veri listelemeyi nasıl hızlandırabilirim
9
●137
- 21-12-2021, 15:28:58hepsini 1 seferde çek, sonra parçalaSNDizayn adlı üyeden alıntı: mesajı görüntüle
- 21-12-2021, 15:29:49veriyi dakikalık olarak cronla bir json'a yazdırın, veriyi sonra o json dan çekin.
Son güncellenme tarihinide yazdırırsınız. - 21-12-2021, 15:31:02Sayfalamayı gene yapın, örneğin 750 veri var diyelim sadece belirli yere kadar yüklesin geri kalanları boş bıraksın fakat 750 veri var gibi dursun ve aşağı indikçe belli etmeden sayfalama yapın. Gene olmaz derseniz veriler veri tabanında ise json dosyasına cache çekin ve oradan yükleyin, daha hızlı olur diye düşünüyorum.
- 21-12-2021, 15:31:55Cache kullanırsan (Memcache, elasticsearch vs) daha hızlı sonuç elde edersin. Ayrıca sadece ihtiyacın olan verileri çekmen de sorgunu biraz daha hızlı çekmeni sağlar. Indexleme yaptığını düşündüğüm için bunu belirtmiyorum bile.
İyi çalışmalar. - 21-12-2021, 15:42:38bu konuya bir örnek verme şansınız varmı tam kafamda canlandıramadım senaryoyusatrancali adlı üyeden alıntı: mesajı görüntüle
datatable json mantığında çalıştığı için biraaz karışık bir işlem olur sanırım buLyNo adlı üyeden alıntı: mesajı görüntüle
datatablenin kendi sayfalama mantığı olduğu için sayfa aşağı indikçe sayfalama yaptırmak zor olur sanırımScarecrow adlı üyeden alıntı: mesajı görüntüle
index olayı aslında aklıma geldi ama datatable ile oluşturduğum lsitelemeye 10 adet alan çekiyorum bu alanların hepsinemi index uygulamam sağlıklı olur. Cache olayı mantıklı ama müşteri sürekli bilgileri değiştiriyor veri ekleme silme düzenleme yapıyor bu durumda cacheyi her seferinde silip yeniden oluşturmam yine sayfa yavaşlamasına neden olur mualiosmanyuksel adlı üyeden alıntı: mesajı görüntüle - 21-12-2021, 20:04:12750 veri çok az bir veri bunun cache gerekeceğini düşünmüyorum.
daha çok query inize odaklanmanızı veya query nin çalışmasına gelene kadar işlemlerin ne kadar sürede tamamlandığına bakabilirsiniz.
basit olarak sql query nizi direkt olarak hangi sql kullanıyorsanız onun arayüzünden çalıştırıp ne kadar sürede sonuç döndüğüne bakabilirsiniz, eğer bu süre ile developer tools da çıkan süre arasında ciddi bir fark var ise query nizin çalışmasına gelene kadar işlemlerde bir problem vardır. eğer fark az ise de dediğim gibi query nin daha az sürede nasıl tamamlanabilir, buna odaklanmak lazım. ilk olarak query nin veri türüne göre düzenlenmesi gerekir, örneğin int olan bir veriyi filtrelerken status = 1 ile status = '1' arasında sql in yorumlaması açısından ve query tamamlanma zamanı açısından dağlar kadar fark oluyor. status int ise bunu tırnaklar ile filtrelemek gereksizdir. bunun gibi ufak şeyleri tamamladıktan sonra sql index aşamasına geçebilirsiniz, buradaki önemli nokta ise yine query nizin where dan sonraki kısmı. yine küçük bir örnek ile açıklayayim. where status = 1 and usertype = 'admin' için index şablonu status ve usertype için ayrı ayrı olmak yerine ikisinin de bir arada olduğu tek bir index olması gerekir. subquery kullanımını minumuma düşürmenizde de fayda olur.
kolaylıklar - 22-12-2021, 01:00:08Sayfalama istemiyorsanız bu gecikme haliyle olacaktır deseniz ve tek seferde çekseniz 1 2 saniye çok mu önemli onlar için? Eğer öyleyse bir iki saniye erken açsınlar o sayfayı hocamSNDizayn adlı üyeden alıntı: mesajı görüntüle