{"id":18471,"date":"2022-05-24T12:27:05","date_gmt":"2022-05-24T05:27:05","guid":{"rendered":"\/tutorial\/?p=18471"},"modified":"2024-04-23T10:48:07","modified_gmt":"2024-04-23T03:48:07","slug":"first-input-delay","status":"publish","type":"post","link":"\/id\/tutorial\/first-input-delay","title":{"rendered":"First input delay: pengertian dan cara optimasinya"},"content":{"rendered":"<p>First Input Delay (FID), yang juga dikenal sebagai latensi input, menghitung waktu respons website sejak interaksi pertama user hingga browser memberikan respons.<\/p><p>Scroll dan zoom di layar tidak bisa diukur dengan First Input Delay, karena dikategorikan sebagai aspek animasi dalam&nbsp;RAIL model. Sementara itu, FID hanya berfokus pada tingkat respons website, yang mengukur delay (penundaan) dalam pemrosesan permintaan user.<\/p><p>Penting untuk menganalisis input delay karena akan berpengaruh pada pengalaman pengguna (user experience) website Anda. Bahkan,&nbsp;25%&nbsp;pengunjung akan meninggalkan website kalau waktu loadingnya melebihi 4 detik.<\/p><p>Di artikel ini, selain membahas apa itu First Input Delay, kami juga akan membahas manfaat, cara optimasi, dan hubungannya dengan metrik Core Web Vitals lainnya, serta cara tes FID dan masalah yang menurunkan nilainya. Yuk, simak dan baca sampai akhir, ya!<\/p><figure class=\"wp-block-image size-large\"><a href=\"https:\/\/app.monstercampaigns.com\/c\/qoryptol67mazkfzkvhc\/\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" width=\"1024\" height=\"283\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2022\/11\/eBook_-Build-website-ID.png\/public\" alt=\"\" class=\"wp-image-27592\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2022\/11\/eBook_-Build-website-ID.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2022\/11\/eBook_-Build-website-ID.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2022\/11\/eBook_-Build-website-ID.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2022\/11\/eBook_-Build-website-ID.png\/w=768,fit=scale-down 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure><p>\n\n\n\n\n\n<div class=\"protip\">\n                    <h2 class=\"featured-snippet title\">Apa Itu First Input Delay (FID)?<\/h2>\n                    <p>First Input Delay adalah metrik yang digunakan untuk memantau lamanya delay (penundaan) yang dibutuhkan sampai browser merespons input user, yaitu klik dan ketukan pada layar.<\/p>\n                <\/div>\n\n\n\n<\/p><h2 class=\"wp-block-heading\" id=\"h-seberapa-pentingkah-first-input-delay\">Seberapa Pentingkah First Input Delay?<\/h2><p>First Input Delay merupakan salah satu faktor penting yang akan memengaruhi kesan suatu website. FID adalah bagian dari metrik Core Web Vitals, bersama dengan&nbsp;<a href=\"\/id\/tutorial\/largest-contentful-paint\">Largest Contentful Paint<\/a>&nbsp;(LCP), <a href=\"\/id\/tutorial\/cumulative-layout-shift\">Cumulative Layout Shift<\/a>&nbsp;(CLS), dan <a href=\"https:\/\/developers.google.com\/search\/blog\/2023\/05\/introducing-inp?hl=id\" target=\"_blank\" rel=\"noreferrer noopener\">Interaction to Next Paint<\/a> (INP).<\/p><p>Dengan Core Web Vitals, Anda bisa mengukur performa halaman serta mendapatkan laporan yang akan membantu Anda meningkatkan performa website.<\/p><p>Selain itu, metrik-metrik tersebut akan memengaruhi pengalaman pengguna dan ranking website, yang tentunya berdampak pada <a href=\"\/id\/tutorial\/apa-itu-seo\">search engine optimization (SEO)<\/a> Anda. Sebab, <a href=\"https:\/\/www.searchenginejournal.com\/ranking-factors\/page-speed\/\" target=\"_blank\" rel=\"noopener\">kecepatan halaman<\/a>&nbsp;merupakan salah satu faktor utama yang menentukan ranking website di Google.<\/p><p>Pengunjung pasti akan merasa sebal kalau harus menunggu lama sampai website Anda merespons interaksi mereka. Nah, hampir semua masalah respons ini terjadi saat halaman web sedang dimuat, jadi, penting sekali untuk menjaga nilai First Input Delay tetap rendah.<\/p><h2 class=\"wp-block-heading\" id=\"h-cara-mengetahui-skor-first-input-delay\">Cara Mengetahui Skor First Input Delay<\/h2><p>Setelah membahas pentingnya First Input Delay bagi halaman Anda, sekarang kami akan membahas cara mengetesnya untuk meningkatkan performa website Anda demi interaksi pengguna yang lebih baik.<\/p><p>Tidak seperti Cumulative Layout Shift dan Largest Contentful Paint, First Input Delay hanya bisa dinilai melalui interaksi nyata pengguna dengan halaman Anda.<\/p><p>Berikut tool yang bisa Anda gunakan untuk mengetahui skor First Input Delay:<\/p><ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/github.com\/GoogleChrome\/web-vitals\" target=\"_blank\" rel=\"noreferrer noopener\">Library JavaScript Web Vitals<\/a><strong>&nbsp;<\/strong>&ndash; tool untuk front-end monitoring, membantu Anda menganalisis setiap metrik dalam waktu singkat dan dengan akurasi tinggi. Setiap metrik menentukan satu fungsi, yaitu callback <strong>onReport<\/strong>. Setelah mengonfigurasi library web vitals Anda, tool ini akan melaporkan apakah website Anda sudah mencapai ambang batas yang disarankan atau belum.<\/li>\n\n\n\n<li><a href=\"https:\/\/developers.google.com\/web\/tools\/chrome-user-experience-report\" target=\"_blank\" rel=\"noreferrer noopener\">Laporan Chrome User Experience<\/a><strong>&nbsp;<\/strong>&ndash; juga dikenal sebagai&nbsp;<strong>CrUX<\/strong>, tool ini membantu developer meningkatkan kegunaan website dengan Core Web Vitals dan metrik diagnostik berdasarkan data pengguna asli. CrUX didukung oleh <a href=\"\/id\/tutorial\/api-adalah\">API<\/a> platform web standar, yang berarti Anda juga bisa menggunakan API tersebut untuk mengumpulkan data&nbsp;<a href=\"https:\/\/stackify.com\/what-is-real-user-monitoring\/\" target=\"_blank\" rel=\"noreferrer noopener\">Real User Monitoring<\/a>&nbsp;(RUM).<\/li>\n\n\n\n<li><a href=\"https:\/\/support.google.com\/webmasters\/answer\/9205520\" target=\"_blank\" rel=\"noreferrer noopener\">Laporan Search Console Core Web Vitals<\/a><strong>&nbsp;<\/strong>&ndash; membantu web developer memperbaiki pengalaman pengguna yang buruk. Laporan ini mengevaluasi performa website Anda berdasarkan data lapangan selama 90 hari menurut status URL, grup, dan tipe metrik. Tapi ingat, laporan ini hanya untuk URL yang diindeks dan didasarkan pada Web Core Vitals. Jadi, kalau tidak memiliki cukup informasi untuk metrik apa pun, URL akan dihapus dari laporan.<\/li>\n\n\n\n<li><a href=\"https:\/\/pagespeed.web.dev\/\" target=\"_blank\" rel=\"noreferrer noopener\">Page Speed Insights<\/a><strong>&nbsp;<\/strong>&ndash; mengecek performa website terbaru dengan cepat. Tool ini membagi informasi menurut user desktop dan mobile, serta data untuk memperbaiki user experience dan debug masalah.<\/li>\n<\/ul><p>Sebagai contoh, Anda ingin menggunakan PageSpeed Insights untuk mengetes First Input Delay. Cukup masukkan satu URL ke dalam kolom pencarian.<\/p><p>Setelahnya, Anda akan mendapatkan penilaian Core Web Vitals pada halaman Anda, serta saran untuk menyempurnakannya. Anda juga bisa melihat berapa input delay di halaman web Anda.<\/p><div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"\/tutorial\/wp-content\/uploads\/sites\/37\/2024\/04\/core-web-vitals-desktop.png\" alt=\"core web vitals desktop\"><\/figure><\/div><h3 class=\"wp-block-heading\">Berapa Nilai FID yang Bagus?<\/h3><p>Umumnya, user akan merasa bahwa halaman Anda bisa merespons permintaan &lsquo;langsung pada saat itu juga&rsquo; adalah ketika respons diberikan kurang dari 0,1 detik.<\/p><p>Jadi, untuk mendapatkan nilai FID yang baik dan user input yang cepat, website harus memiliki FID kurang dari <strong>100 ms<\/strong> sebagai batas maksimum. Idealnya, website harus mencapai <strong>&lt;100 ms<\/strong> dari <strong>75%<\/strong> loading semua halaman, termasuk perangkat mobile dan desktop.<\/p><p>Grafik di bawah ini menunjukkan pengelompokan nilai First Input Delay yang dianggap bagus, perlu diperbaiki, dan buruk.<\/p><div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" width=\"768\" height=\"273\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2022\/05\/nilai-fid-yang-baik.png\/public\" alt=\"nilai fid yang baik\" class=\"wp-image-18475\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2022\/05\/nilai-fid-yang-baik.png\/w=768,fit=scale-down 768w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2022\/05\/nilai-fid-yang-baik.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2022\/05\/nilai-fid-yang-baik.png\/w=150,fit=scale-down 150w\" sizes=\"(max-width: 768px) 100vw, 768px\" \/><\/figure><\/div><h3 class=\"wp-block-heading\">Max Potential First Input Delay<\/h3><p>Max Potential First Input Delay (MPFID) adalah tugas terlama sebuah halaman. MPFID mengukur waktu respons halaman selama task terlama berjalan. Perlu diperhatikan bahwa pengukuran dimulai hanya setelah first contentful paint (FCP) dihitung.<\/p><p>Hasil nilai diambil dari perbandingan waktu max potential FID dengan waktu max potential FID pada website lainnya di internet. Misalnya, kalau nilai MPFID Anda termasuk hijau, artinya performa halaman Anda lebih baik daripada&nbsp;<strong>90%<\/strong>&nbsp;website lainnya.<\/p><div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" width=\"1000\" height=\"464\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2022\/05\/kriteria-nilai-first-input-delay.png\/public\" alt=\"kriteria nilai first input delay\" class=\"wp-image-18474\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2022\/05\/kriteria-nilai-first-input-delay.png\/w=1000,fit=scale-down 1000w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2022\/05\/kriteria-nilai-first-input-delay.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2022\/05\/kriteria-nilai-first-input-delay.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2022\/05\/kriteria-nilai-first-input-delay.png\/w=768,fit=scale-down 768w\" sizes=\"(max-width: 1000px) 100vw, 1000px\" \/><\/figure><\/div><h2 class=\"wp-block-heading\" id=\"h-apa-penyebab-nilai-fid-rendah\">Apa Penyebab Nilai FID Rendah?<\/h2><p>Apabila mendapatkan nilai First Input Delay yang rendah, Anda harus tahu bagian mana saja pada halaman Anda yang perlu diperbaiki.<\/p><p>Salah satu penyebab utama yang membuat browser tidak bisa merespons interaksi user dengan cepat adalah input user yang terblokir. Ini terjadi saat main thread browser sibuk mengerjakan task lain.<\/p><p>Task ini biasanya termasuk menangani HTML, CSS, dan Javascript, sehingga pekerjaan browser mejadi terlalu berat. Task panjang <a href=\"\/id\/tutorial\/apa-itu-javascript\">JavaScript adalah<\/a> error umum yang menyebabkan penundaaan pada main thread, bahkan event listener menjadi tidak bisa berjalan.<\/p><p>Untuk menemukan masalah ini, gunakan PageSpeed &#8203;&#8203;Insights dan cari bagian audit <strong>Avoid long main-thread tasks<\/strong>.<\/p><div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" width=\"768\" height=\"361\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2022\/05\/pagespeed-insights.png\/public\" alt=\"pagespeed insights\" class=\"wp-image-18476\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2022\/05\/pagespeed-insights.png\/w=768,fit=scale-down 768w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2022\/05\/pagespeed-insights.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2022\/05\/pagespeed-insights.png\/w=150,fit=scale-down 150w\" sizes=\"(max-width: 768px) 100vw, 768px\" \/><\/figure><\/div><h2 class=\"wp-block-heading\" id=\"h-8-cara-optimasi-first-input-delay-fid\">8 Cara Optimasi First Input Delay (FID)<\/h2><p>Setelah memahami cara menguji FID dan mencari kemungkinan penyebab yang membuat nilai FID Anda rendah, sekarang kami akan membahas cara optimasi First Input Delay.<\/p><p>Biasanya, JavaScript memiliki dampak yang paling signifikan pada nilai FID. Jadi, kami merekomendasikan Anda untuk mengoptimasi kode JavaScript.<\/p><p>Ikuti langkah di bawah ini untuk melakukannya:<\/p><h3 class=\"wp-block-heading\">1. Pecah Task Panjang Menjadi Bagian Kecil<\/h3><p><strong>Tingkat kesulitan:&nbsp;<\/strong>mudah<\/p><p><strong>Dampak:&nbsp;<\/strong>tinggi<\/p><p>Saat main thread browser sibuk dan terblokir, permintaan user pun tidak bisa diproses sehingga halaman menjadi tidak responsif. Tingkat respons yang tidak mencukupi tersebut disebabkan oleh task yang berjalan lebih lama dari&nbsp;<strong>50 ms<\/strong>.<\/p><p>Task JavaScript menggunakan banyak resource yang bisa memengaruhi performa kecepatan halaman. Untuk mengatasinya, hapus task tersebut atau pecah task panjang menjadi bagian yang lebih kecil dan asinkron. Paling tidak, satu task menjadi tidak lebih lama dari&nbsp;<strong>50 ms<\/strong>.<\/p><p>Anda bisa menggunakan fungsi&nbsp;<strong>setTimeout<\/strong>&nbsp;untuk memecah task panjang menjadi beberapa task kecil agar main thread bisa merespons input user tanpa delay.<\/p><h3 class=\"wp-block-heading\">2. Terapkan Progressive Loading<\/h3><p><strong>Tingkat kesulitan:&nbsp;<\/strong>menengah<\/p><p><strong>Dampak:&nbsp;<\/strong>tinggi<\/p><p>Website dengan loading yang cepat bisa meningkatkan pengalaman penggunanya. Ada banyak komponen seperti gambar atau task JavaScript besar yang bisa membuat web browser menjadi lambat.<\/p><p>Untuk mengatasi masalah ini, buat kode progressive loading dengan memasukkan semua file JavaScript ke dalam&nbsp;bundling <strong>bundle.js<\/strong>. Untuk melakukannya, Anda bisa menggunakan&nbsp;<a href=\"https:\/\/webpack.js.org\/\" target=\"_blank\" rel=\"noreferrer noopener\">webpack<\/a>.<\/p><p>Bundling juga membantu Anda meminimalkan ukuran halaman dan menghapus kode yang tidak terpakai, atau memperkecilnya (minify) dengan mudah. Selain itu, bundling membuat browser hanya memuat komponen UI saat diperlukan saja.<\/p><h3 class=\"wp-block-heading\" id=\"h-3-pindahkan-logic-ke-server-side\">3. Pindahkan Logic ke Server-Side<\/h3><p><strong>Tingkat<\/strong> <strong>kesulitan:&nbsp;<\/strong>sulit<\/p><p><strong>Dampak:&nbsp;<\/strong>tinggi<\/p><p>Server-side rendering (SSR\/Rendering sisi server) adalah proses untuk menampilkan halaman web pada server.<\/p><p>Dengan server-side render, halaman Anda akan ditampilkan dengan cepat tanpa harus menunggu resource tersedia. Solusi ini bisa mengatasi masalah halaman yang diindeks dan crawl budget, yang tentunya bermanfaat untuk memaksimalkan SEO.<\/p><p>Selain itu, server-side rendering bisa meningkatkan kecepatan First Contentful Paint dan Time to Interactive (TTI) dengan mencegah pengiriman file JavaScript besar ke client. Hasilnya, loading halaman web Anda pun akan menjadi lebih cepat.<\/p><p>Anda bisa merender versi server-side menggunakan framework front-end seperti <strong>Vue<\/strong>, <a href=\"\/id\/tutorial\/apa-itu-react\">React<\/a>, atau&nbsp;<strong>Svelte<\/strong>. Sebelum menggunakan aplikasi ini, pastikan Anda sudah menginstal&nbsp;<a href=\"https:\/\/nodejs.org\/en\/\" target=\"_blank\" rel=\"noreferrer noopener\">Node.js<\/a>&nbsp;untuk menjalankan JavaScript di server.<\/p><figure class=\"wp-block-image size-large\"><a href=\"\/id\/\" target=\"_blank\" rel=\"noreferrer noopener\"><img decoding=\"async\" width=\"1024\" height=\"300\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2023\/02\/ID-Web-hosting_in-text-banner.png\/public\" alt=\"\" class=\"wp-image-29634\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2023\/02\/ID-Web-hosting_in-text-banner.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2023\/02\/ID-Web-hosting_in-text-banner.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2023\/02\/ID-Web-hosting_in-text-banner.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2023\/02\/ID-Web-hosting_in-text-banner.png\/w=768,fit=scale-down 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure><h3 class=\"wp-block-heading\">4. Hasilkan Konten Secara Statis<\/h3><p><strong><strong>Tingkat <\/strong>kesulitan:&nbsp;<\/strong>menengah<\/p><p><strong>Dampak:&nbsp;<\/strong>tinggi<\/p><p>Tidak seperti server rendering, static rendering menghasilkan (generate) satu halaman HTML yang disiapkan satu kali saat build time. Cara ini memungkinkan user mengakses halaman lebih awal.<\/p><p>Anda bisa menggunakan static site generator, seperti&nbsp;<a href=\"https:\/\/www.gatsbyjs.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">Gatsby<\/a>, untuk menghasilkan halaman HTML statis dari data, konten, dan template. Lalu, generator ini akan menghasilkan tampilan halaman yang bisa disajikan kepada pengguna.<\/p><p>Ingat, static rendering tidak sesuai untuk website besar yang memiliki banyak halaman atau memerlukan perubahan respons pada setiap permintaan. Sebab, solusi ini mengharuskan website diluncurkan dan dites, yang akan turut memengaruhi update real-time.<\/p><p>Selain itu, proses peluncuran Anda nantinya bisa menjadi lebih rumit.<\/p><h3 class=\"wp-block-heading\">5. Tinjau Eksekusi Script Pihak Ketiga<\/h3><p><strong><strong>Tingkat <\/strong>kesulitan:&nbsp;<\/strong>sulit<\/p><p><strong>Dampak:&nbsp;<\/strong>tinggi<\/p><p>Lamanya waktu loading bisa disebabkan oleh script pihak ketiga yang menambah fungsionalitas website, seperti live chat, iklan, dan analitik.<\/p><p>Kode pihak ketiga bisa menimbulkan masalah, seperti pemrosesan permintaan jaringan yang terlalu banyak ke berbagai server yang mengirimkan task JavaScript atau file gambar besar yang memblokir main thread.<\/p><p>Untuk meninjau script pihak ketiga, Anda bisa menguji website di PageSpeed &#8203;&#8203;Insights. Tool ini akan menunjukkan daftar resource pihak ketiga yang dimuat, serta ukuran transfer dan waktu blokir thread utama.<\/p><p>Gunakan async atau defer attribute untuk mempersingkat waktu loading dalam script pihak ketiga. Dengan begitu, Anda bisa menyingkirkan masalah blocking rendering dan memicu proses loading yang lebih cepat.<\/p><p>Script penting yang sekiranya vital untuk loading halaman tidak akan menggunakan async atau defer attribute karena ini hanya diperuntukkan bagi script eksternal.<\/p><h3 class=\"wp-block-heading\">6. Manfaatkan Web Worker<\/h3><p><strong><strong>Tingkat <\/strong>kesulitan:&nbsp;<\/strong>sulit<\/p><p><strong>Dampak:&nbsp;<\/strong>tinggi<\/p><p><a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/API\/Web_Workers_API\/Using_web_workers\" target=\"_blank\" rel=\"noreferrer noopener\">Web worker<\/a>&nbsp;membantu mengurangi waktu blokir thread utama dan memperbaiki nilai FID website Anda. Web worker memungkinkan Anda memindahkan task panjang ke background thread tanpa mengganggu user interface, sehingga website Anda menjadi lebih responsif.<\/p><p>Gunakan kode <strong>Worker(&ldquo;path\/to\/worker\/script&rdquo;)<\/strong>&nbsp;untuk membuat worker. Kode ini bisa mengirim pesan ke kode JavaScript dengan memposting pesan ke event handler yang ditentukan oleh kode tersebut dan sebaliknya.<\/p><p>Selain itu, web worker bisa mengerjakan task input atau output menggunakan <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/API\/XMLHttpRequest\" target=\"_blank\" rel=\"noreferrer noopener\">XMLHttpRequest<\/a> atau <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/API\/Fetch_API\" target=\"_blank\" rel=\"noreferrer noopener\">fetch<\/a>.<\/p><p>Untuk mempelajari cara menggunakan web worker, silakan kunjungi library berikut:<\/p><ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/github.com\/GoogleChromeLabs\/comlink\" target=\"_blank\" rel=\"noreferrer noopener\">Comlink<\/a>&nbsp;&ndash; library kecil yang menyederhanakan penggunaan <strong>postMessage\/<\/strong>.<\/li>\n\n\n\n<li><a href=\"https:\/\/github.com\/WebReflection\/workway\" target=\"_blank\" rel=\"noreferrer noopener\">Workway<\/a>&nbsp;&ndash; web worker exporter.<\/li>\n\n\n\n<li><a href=\"https:\/\/github.com\/developit\/workerize\" target=\"_blank\" rel=\"noreferrer noopener\">Workerize<\/a>&nbsp;&ndash; webpack loader yang memindahkan modul ke dalam web worker.<\/li>\n<\/ul><h3 class=\"wp-block-heading\">7. Optimalkan JavaScript yang Tidak Diperlukan<\/h3><p><strong><strong>Tingkat <\/strong>kesulitan:&nbsp;<\/strong>sulit<\/p><p><strong>Dampak:&nbsp;<\/strong>tinggi<\/p><p>Task JavaScript yang terlalu banyak butuh waktu lama untuk diuraikan dan dieksekusi. Akibatnya, waktu respons browser pun tertunda. Browser akan berhenti apabila menemukan tag script yang terkait dengan kode JavaScript eksternal. Nah, oleh karena itu, jalankan kode yang dibutuhkan saja.<\/p><p>Ada beberapa cara optimasi JavaScript, misalnya code-split dan defer JavaScript yang kurang penting. Sebelum mulai, Anda bisa menggunakan tab&nbsp;<a href=\"https:\/\/developers.google.com\/web\/tools\/chrome-devtools\/coverage\" target=\"_blank\" rel=\"noreferrer noopener\">Coverage<\/a>&nbsp;di Chrome DevTools untuk mengecek seberapa banyak JavaScript yang tidak terpakai di halaman web Anda.<\/p><p>Code-split memungkinkan Anda memisahkan bundle JavaScript menjadi bagian-bagian kecil dan memuat halaman saat dibutuhkan saja. Langkah ini juga dikenal sebagai&nbsp;<a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/Performance\/Lazy_loading\" target=\"_blank\" rel=\"noreferrer noopener\">lazy loading<\/a>.<\/p><p>Sementara itu, untuk melakukan defer task Javascript apa pun yang bersifat kurang penting, selalu gunakan <a href=\"https:\/\/javascript.info\/script-async-defer\" target=\"_blank\" rel=\"noreferrer noopener\">async atau defer<\/a>&nbsp;untuk script yang tidak diperlukan bagi <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/Performance\/Critical_rendering_path\" target=\"_blank\" rel=\"noreferrer noopener\">critical rendering path<\/a>&nbsp;atau&nbsp;<a href=\"https:\/\/www.optimizely.com\/optimization-glossary\/above-the-fold\/\" target=\"_blank\" rel=\"noreferrer noopener\">above the fold<\/a>.<\/p><h3 class=\"wp-block-heading\">8. Perbaiki Penggunaan Polyfill<\/h3><p><strong><strong>Tingkat <\/strong> kesulitan:&nbsp;<\/strong>sulit<\/p><p><strong>Dampak:&nbsp;<\/strong>rendah<\/p><p>Polyfill adalah kode yang digunakan untuk menyediakan fitur modern pada browser lama yang tidak mendukungnya secara native.<\/p><p>Contohnya, saat menggunakan sintaksis JavaScript modern dan API browser untuk menulis kode, Anda perlu melakukan transpile dan menyediakan polyfill agar fitur modern tersebut bisa berjalan di browser versi lama.<\/p><p>Penggunaan polyfill bisa menciptakan lebih banyak bundle yang membutuhkan waktu lebih lama untuk dimuat pada browser. Jadi, penting untuk meminimalkan polyfill yang tidak digunakan, dan hanya gunakan ketika diperlukan saja.<\/p><p>Untuk mempersingkat waktu loading halaman web Anda, gunakan compiler JavaScript seperti Babel, dan gunakan&nbsp;<a href=\"https:\/\/babeljs.io\/docs\/en\/babel-preset-env\" target=\"_blank\" rel=\"noreferrer noopener\">@babel\/preset-env<\/a>&nbsp;untuk menyertakan polyfill yang diperlukan bagi browser versi lama.<\/p><p>Anda juga bisa mengurangi penggunaan polyfill yang tidak digunakan dengan mengaktifkan opsi bugfix pada versi Babel 7.9.<\/p><p>Alternatifnya, deliver dua bundle yang terpisah dengan menggunakan <a href=\"https:\/\/3perf.com\/blog\/polyfills\/#modulenomodule\" target=\"_blank\" rel=\"noreferrer noopener\">module\/nomodule<\/a>&nbsp;untuk mengoptimalkan polyfill.<\/p><h2 class=\"wp-block-heading\" id=\"h-first-input-delay-terkait-metrik-lainnya\">First Input Delay Terkait Metrik Lainnya<\/h2><p>First Input Delay atau FID adalah metrik yang harus diuji dengan data lapangan berdasarkan interaksi nyata dari user. Selain itu, Anda harus memantau metrik lainnya yang masih berkaitan dengan FID.<\/p><p>Mari analisis secara lebih mendetail, metrik apa saja yang berkaitan dengan nilai FID.<\/p><h3 class=\"wp-block-heading\">First Input Delay vs First Contentful Paint (FCP)<\/h3><p>First Contentful Paint berfungsi untuk mengukur seberapa lama halaman dimuat sejak loading awal, sampai konten ditampilkan di layar. Konten halaman berasal dari Document Object Model (DOM), yang mencakup gambar, teks, atau diagram.<\/p><p>Sementara itu, First Input Delay mengukur seberapa lama browser merespons. Keduanya berdampak signifikan pada kesan pertama user sebelum dan setelah berinteraksi dengan halaman. FID dan FCP memiliki kaitan yang erat untuk memberikan kesan pertama yang lebih baik kepada user.<\/p><p>Selain itu, FCP yang cepat akan membantu user lebih menyadari bahwa informasi yang mereka minta sedang diproses, sehingga mereka tetap bersedia menunggu saat mengakses website.<\/p><h3 class=\"wp-block-heading\">First Input Delay vs Time to Interactive (TTI)<\/h3><p>Time to Interactive (TTI) mengukur seberapa lama halaman bisa sepenuhnya interaktif. Pengukurannya dimulai setelah FCP dijalankan, dan ketika user bisa berinteraksi dengan halaman.<\/p><p>Sepenuhnya interaktif di sini berarti halaman bisa merespons interaksi user dalam waktu kurang dari&nbsp;<strong>50 ms<\/strong>, dan event handler terdeteksi pada sebagian besar elemen halaman yang terlihat.<\/p><p>Dengan mengetahui nilai TTI ini, Anda bisa mengidentifikasi apakah halaman website Anda bisa sepenuhnya digunakan. Selain FID yang bagus, halaman Anda bisa menjadi interaktif sepenuhnya sesuai kebutuhan pengguna.<\/p><h3 class=\"wp-block-heading\">First Input Delay vs Total Blocking Time (TBT)<\/h3><p>Total Blocking Time (TBT) dan FID cukup mirip. Keduanya mengukur lama waktu respons pada halaman. Bedanya, TBT tidak menggunakan user input. Singkatnya, TBT adalah seberapa lama task panjang memblokir thread utama.<\/p><p>Task Javascript yang panjang pada halaman web bisa memengaruhi nilai FID dan TBT. Dengan mengamati metrik FID dan TBT, Anda bisa melihat seberapa signifikan dampak task panjang tersebut pada tingkat respons website.<\/p><p>Kedua metrik ini berkaitan erat dan memengaruhi satu sama lain dalam hal kegunaan halaman. Jadi, Anda bisa mengoptimalkan FID dengan memperbaiki nilai TBT.<\/p><figure class=\"wp-block-image size-large\"><a href=\"\/id\/\" target=\"_blank\" rel=\"noreferrer noopener\"><img decoding=\"async\" width=\"1024\" height=\"300\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2023\/02\/ID-Web-hosting_in-text-banner.png\/public\" alt=\"\" class=\"wp-image-29634\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2023\/02\/ID-Web-hosting_in-text-banner.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2023\/02\/ID-Web-hosting_in-text-banner.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2023\/02\/ID-Web-hosting_in-text-banner.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2023\/02\/ID-Web-hosting_in-text-banner.png\/w=768,fit=scale-down 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure><h2 class=\"wp-block-heading\" id=\"h-kesimpulan\">Kesimpulan<\/h2><p>Website yang responsif bisa memberikan dampak yang signifikan pada user experience situs. Oleh karena itu, penting untuk melakukan tes dan analisis Core Web Vitals, termasuk First Input Delay (FID) agar Anda bisa turut meningkatkan performa halaman website.<\/p><p>Masalah paling umum yang menyebabkan lamanya input delay adalah terblokirnya thread utama. Hal ini biasanya diakibatkan oleh JavaScript yang tidak optimal. Jadi, untuk memperbaiki nilai First Input Delay, optimalkan kode JavaScript Anda dengan cara:<\/p><ul class=\"wp-block-list\">\n<li>Memecah task yang panjang.<\/li>\n\n\n\n<li>Menerapkan progressive loading.<\/li>\n\n\n\n<li>Menggunakan server-side rendering.<\/li>\n\n\n\n<li>Menghasilkan kontent secara statis.<\/li>\n\n\n\n<li>Mengaudit script pihak ketiga.<\/li>\n\n\n\n<li>Menggunakan web worker.<\/li>\n\n\n\n<li>Menunda JavaScript yang tidak terpakai dan kurang penting.<\/li>\n\n\n\n<li>Membatasi penggunaan polyfill.<\/li>\n<\/ul><p>Setelah memodifikasi halaman, uji coba browser Anda dan pastikan website berfungsi dengan baik. Kalau masih memiliki pertanyaan atau saran untuk memperbaiki nilai First Input Delay, jangan ragu untuk menyampaikannya melalui kolom komentar di bawah ini, ya.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>First Input Delay (FID), yang juga dikenal sebagai latensi input, menghitung waktu respons website sejak interaksi pertama user hingga browser memberikan respons. Scroll dan zoom di layar tidak bisa diukur dengan First Input Delay, karena dikategorikan sebagai aspek animasi dalam&nbsp;RAIL model. Sementara itu, FID hanya berfokus pada tingkat respons website, yang mengukur delay (penundaan) dalam [&#8230;]<\/p>\n<p><a class=\"btn btn-secondary understrap-read-more-link\" href=\"\/id\/tutorial\/first-input-delay\">Read More&#8230;<\/a><\/p>\n","protected":false},"author":190,"featured_media":21937,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"rank_math_title":"","rank_math_description":"First Input Delay adalah salah satu metrik yang harus Anda perhatikan untuk mengoptimasi website. Yuk, baca pengertian & cara optimasinya!","rank_math_focus_keyword":"first input delay","footnotes":""},"categories":[4983,9455],"tags":[],"class_list":["post-18471","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-web-development","category-optimasi"],"hreflangs":[{"locale":"en-US","link":"https:\/\/www.hostinger.com\/tutorials\/first-input-delay","default":0},{"locale":"pt-BR","link":"https:\/\/www.hostinger.com\/br\/tutoriais\/first-input-delay","default":0},{"locale":"id-ID","link":"https:\/\/www.hostinger.com\/id\/tutorial\/first-input-delay","default":0},{"locale":"en-UK","link":"https:\/\/www.hostinger.com\/uk\/tutorials\/first-input-delay","default":0},{"locale":"en-MY","link":"https:\/\/www.hostinger.com\/my\/tutorials\/what-is-first-input-delay-and-how-to-improve-it","default":0},{"locale":"en-PH","link":"https:\/\/www.hostinger.com\/ph\/tutorials\/what-is-first-input-delay-and-how-to-improve-it","default":0},{"locale":"pt-PT","link":"https:\/\/www.hostinger.com\/pt\/tutoriais\/first-input-delay","default":0},{"locale":"en-IN","link":"https:\/\/www.hostinger.com\/in\/tutorials\/first-input-delay","default":0},{"locale":"en-CA","link":"https:\/\/www.hostinger.com\/ca\/tutorials\/first-input-delay","default":0},{"locale":"en-AU","link":"https:\/\/www.hostinger.com\/au\/tutorials\/first-input-delay","default":0},{"locale":"en-NG","link":"https:\/\/www.hostinger.com\/ng\/tutorials\/first-input-delay","default":0}],"_links":{"self":[{"href":"https:\/\/www.hostinger.com\/id\/tutorial\/wp-json\/wp\/v2\/posts\/18471","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hostinger.com\/id\/tutorial\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hostinger.com\/id\/tutorial\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hostinger.com\/id\/tutorial\/wp-json\/wp\/v2\/users\/190"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hostinger.com\/id\/tutorial\/wp-json\/wp\/v2\/comments?post=18471"}],"version-history":[{"count":56,"href":"https:\/\/www.hostinger.com\/id\/tutorial\/wp-json\/wp\/v2\/posts\/18471\/revisions"}],"predecessor-version":[{"id":35375,"href":"https:\/\/www.hostinger.com\/id\/tutorial\/wp-json\/wp\/v2\/posts\/18471\/revisions\/35375"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.hostinger.com\/id\/tutorial\/wp-json\/wp\/v2\/media\/21937"}],"wp:attachment":[{"href":"https:\/\/www.hostinger.com\/id\/tutorial\/wp-json\/wp\/v2\/media?parent=18471"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hostinger.com\/id\/tutorial\/wp-json\/wp\/v2\/categories?post=18471"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hostinger.com\/id\/tutorial\/wp-json\/wp\/v2\/tags?post=18471"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}