Slide 1

Slide 1 text

Kinerja Web 101 Irfan Maulana Principal Engineer @ Tokopedia Selasa, 14 April 2020 19:30 WIB

Slide 2

Slide 2 text

2013 2015 2018 2019 2013 Java Developer SML Technologies 2015 Frontend Dev Blibli.com 2018 Frontend Dev Bizzy.co.id 2019 Principal Eng Tokopedia Perjalanan Karir Saya

Slide 3

Slide 3 text

Beda Web dengan Apps Apps Kamu mungkin cuma akan mengunduhnya sekali Web Kamu harus mengunduhnya setiap saat

Slide 4

Slide 4 text

Jadi, pikirkan sumber daya yang akan kalian kirimkan!

Slide 5

Slide 5 text

Kenapa Web tetap dicintai? Lebih mudah didistribusikan Lebih mudah dicari Mudah diakses tanpa pemasangan Mudah membagikan halaman tertentu Selalu terbaru

Slide 6

Slide 6 text

Kenapa kinerja web menjadi penting? Pengguna aktif Sumber: https://developers.google.com/web/fundamentals/performance/why-performance-matters Konversi Pengalaman Pengguna Mengenai Kamu!

Slide 7

Slide 7 text

Bagaimana Mengukurnya? ● Lighthouse, PageSpeed Insight, Web.dev measure ● WebPageTest, GTMetrix, SiteSpeed.io ● GA, New Relic, Akamai mPulse, RayGun, AppDynamics Jangan cuma diukur, disimpan juga ya data pergerakannya!

Slide 8

Slide 8 text

Hal-hal yang bisa kita lakukan ● Meningkatkan kemampuan menerima dan mengirimkan permintaan ● Memperkecil dan memampatkan ukuran sumber daya yang dikirimkan ● Kirimkan HANYA yang dibutuhkan oleh pengguna ● Kurangi jumlah yang harus dikirimkan ● Atur prioritas pengiriman ● Adaptasikan dengan keadaan pengguna

Slide 9

Slide 9 text

Meningkatkan kemampuan menerima dan mengirim permintaan ● Tingkatkan kemampuan peladen (server) ● Gunakan penyedia layanan yang mumpuni ● Pasang HTTP/2 ● Gunakan CDN untuk mendekatkan dengan pengguna

Slide 10

Slide 10 text

Memampatkan sumber daya ● Pastikan selalu kirimkan sumber data dalam bentuk sudah ter-gzip atau brotli ● JS, CSS dan HTML sebisa mungkin harus sudah di “minify”, di “optimize” dan dibuang kode mati di dalamnya. ● Kurangi penggunaan text karena tidak bisa di “minify”

Slide 11

Slide 11 text

Memperkecil sumber daya ● Hapus kode yang tidak dibutuhkan, gabungkan kode yang bersifat duplikasi ● Perhatikan benar-benar penggunaan pustaka dari luar, cek bundlephobia.com terlebih dahulu dan cek komposisi kode kalian dengan BundleAnalyzer setelahnya ● Kurangi kualitas gambar (atau media lainnya) dan pilih tipe yang tepat

Slide 12

Slide 12 text

Kirimkan hanya yang dibutuhkan ● Pecahkan kode (code-splitting) dan tunda pengiriman (lazy load) pada saat dibutuhkan saja ● Prioritaskan sumber daya yang terlihat di layar saat pertama kali dan tunda yang berada di bawah layar ● Kirimkan sumber daya sesuai dengan halamannya ● Sesuaikan dimensi gambar dengan penampungnya, kirimkan gambar dalam beberapa versi ukuran

Slide 13

Slide 13 text

Kurangi jumlah yang permintaan ● Gabungkan permintaan ke peladen yang tidak harus saling tunggu ● Gunakan cara muat yang tidak memblokir proses ● Utamakan Internal CSS pada bagian kritis ● Gunakan sprite pada gambar yang datang secara bersamaan ● Kurangi vendor pelacakan dari pihak luar ● Cache semua sumber daya statis

Slide 14

Slide 14 text

Atur prioritas pengiriman ● Naikan prioritas untuk sumber daya kritis, gunakan preload ● Turunkan prioritas yang tidak digunakan saat pertama namun dibutuhkan secepatnya pada aksi berikutnya, gunakan prefetch Sumber: https://medium.com/reloading/preload-prefetch-and-priorities-in-chrome-776165961bbf

Slide 15

Slide 15 text

Adaptasikan dengan keadaan pengguna ● Bedakan sumber daya untuk pengguna dengan kecepatan internet cepat dan lambat serta pengguna dengan peramban modern dan lawas ● Tidak perlu melakukan “transpile” dan mengirimkan “polyfill” pada peramban modern ● Sebisa mungkin gunakan fitur bawaan dari peramban, cek terlebih dahulu dukungan dari peramban Sumber: https://addyosmani.com/blog/adaptive-loading/

Slide 16

Slide 16 text

Mengenai pekerjaan optimasi kinerja web ● Web bukan hanya tanggung jawab si pemrogram saja, memastikan semua pihak mengerti dan bertanggung jawab bersama merupakan hal wajib di awal. ● Optimasi bukan pekerjaan yang sekali selesai, dibutuhkan konsistensi untuk secara berkelanjutan memantau dan memperbaikinya. ● Jangan melakukan optimasi tanpa data, data penting bagi kita untuk merekam kondisi terkini dan capaian yang sudah didapat

Slide 17

Slide 17 text

Baca lebih lanjut https://mazipan.space/best-practice-loading-a-web/

Slide 18

Slide 18 text

Silahkan sampaikan pertanyaan!

Slide 19

Slide 19 text

Temukan saya di dunia maya! Facebook : s.id/fb-mazipan Twitter : s.id/tw-mazipan Linkedin : s.id/in-mazipan Github : s.id/gh-mazipan Blog : mazipan.space

Slide 20

Slide 20 text

Terima Kasih.