progrez.cloud

Efisiensi Auto Save di Task Editor

02 Juli 2020

Pada update sebelumnya, field "Description" saat menambah task baru telah dihilangkan dan menggantinya di fitur Edit Task dengan fitur baru yang lebih nyaman, dan salah satunya adalah fitur "Auto Save" setiap 30 detik. Karena dirasa waktu 30 detik terlalu cepat, agar tidak boros trafik dengan terus mengupdate data setiap 30 detik, akhirnya waktu auto save ini diperpanjang menjadi 60 detik.


Akan tetapi, perpanjangan waktu auto save menjadi 60 detik ini ternyata tetap tidak efisien, karena di sisi server akan terus mencatat logs update ini, apalagi ketika user meninggalkan halaman "Edit Task" dalam keadaan terbuka. Di background, pengiriman update data terus dilakukan.



Akhirnya, efisiensi perlu dilakukan disisi kode. Fungsi task_save() yang dijadwalkan setiap 60 detik


setInterval(task_save,60000);


dikembalikan menjadi 30 detik, dengan menambah fungsi task_autosave() yang didalamnya terdapat prosedur efisiensi auto save.


setInterval(task_autosave,30000);


Dimana fungsi task_autosave() ini akan melakukan pengecekan terhadap isi dari "Description" yang sedang diedit. Jika terdapat perubahan, barulah fungsi task_save() dipanggil. Kita tidak akan menggunakan fungsi onChange() di javascript, karena ini jauh lebih buruk. Karena setiap perubahan "per karakter" akan langsung diupdate ke server. Dan juga, untuk metode komparasinya, kita tidak akan langsung mengecek isi "Description" baris per baris. Selain membutuhkan resource yang lebih besar, cara ini juga berpotensi menghasilkan "false return" ala javascript. Dan solusi untuk masalah ini adalah dengan mengubah isi "Description" menjadi hash, yang kemudian tinggal dibandingkan dengan hasil hash "Description" sebelumnya yang telah disimpan di localstorage.


function task_autosave(){
   let c = oo(".ql-editor")[0].innerHTML.replace(/'/g,"\'");
   if(ls.taskautosave == "undefined"){
      ls.taskautosave = c.toHash();
      task_save(false);
   } else {
      if(ls.taskautosave != c.toHash()){
         ls.taskautosave = c.toHash();
         task_save(false);
      }
   }
}


Dengan cara ini, disisi pengguna tidak boros bandwidth, dan di sisi server tidak terjadi logs spamming.


Progrez.Cloud akan selalu melakukan efisiensi program disetiap detail, bahkan pada fungsi sederhana sekalipun. Karena penggunaan resource yang besar tidak hanya berasal dari aktivitas yang besar. Tapi juga berasal dari aktivitas yang kecil, tapi terakumulasi.


Please Enjoy Progrez.Cloud


Other Post

02 Juli 2020

Lebih Dari 20.000 Task dari 1.000 Project di Progrez.Cloud

Pada tanggal 24 Juni 2020, Progrez.Cloud pernah merilis statistik penggunaan platform project ini. K

130 Read

02 Juli 2020

Pertama Kalinya, Progrez.Cloud Bisa Dimanfaatkan Sebagai Platform CTF

Mengikuti kompetisi dibidang keamanan yang populer dengan nama Capture The Flag (CTF) membutuhkan ke

115 Read

02 Juli 2020

Segera Perbarui Avatar Profilmu di Progrez.Cloud

Hi Progrezit,beberapa hari terakhir ini website Progrez.Cloud sedang melakukan beberapa perubahan kh

62 Read