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

00

Melihat Statistik Geoprofil Pengunjung di me.progrez.cloud

Hi Progrezian, lama sudah Progrez.Cloud tidak memberikan informasi update terbaru. Walaupun tanpa up

1862 Read

00

Tak Perlu Full Project, Sekarang Cukup Bagikan List Pekerjaan Yang Penting Saja Ke Client

Pada fitur "Share Project" yang sudah tersedia di Progrez.Cloud, seluruh task dan subtask nya akan i

1109 Read

00

Fitur "Copy Task" Memudahkan Penanganan Tugas-Tugas yang Serupa Di Dalam Project

Dalam manajemen task terkadang terdapat beberapa "Main Task" yang memiliki Sub Task yang sama. Darip

1105 Read