Skip to content
This repository has been archived by the owner on Sep 22, 2019. It is now read-only.

Menganalisa First Meaningful Paint #2

Open
faultables opened this issue Apr 22, 2019 · 6 comments
Open

Menganalisa First Meaningful Paint #2

faultables opened this issue Apr 22, 2019 · 6 comments
Assignees
Labels
performance make the web fast

Comments

@faultables
Copy link

faultables commented Apr 22, 2019

Barusan menganalisa Lighthouse Report untuk situs evilfactory.id halaman index. Mengapa halaman index? Karena halaman index adalah halaman awal dimana pengunjung akan melihat bagaimana layanan yang kita tawarkan.

Berikut hasil reportnya:

Screen Shot 2019-04-22 at 19 34 12

Terlihat bahwa dibagian performance, memiliki skor 94. Bagian yang paling menarik adalah bahwa waktu untuk mencapai "First Meaningful Paint" memakan 2.5 detik.

Screen Shot 2019-04-22 at 19 43 28

"Screenshot" diatas muncul (tulisan-tulisan) setelah sekitar 2.5 detik. Berikut data yang saya gunakan untuk menguji situs tersebut (di local):

URL: https://evilfactory.id/
Fetch time: Apr 22, 2019, 7:42 PM GMT+7
Device: Emulated Nexus 5X
Network throttling: 150 ms TCP RTT, 1,638.4 Kbps throughput (Simulated)
CPU throttling: 4x slowdown (Simulated)
User agent (host): Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3732.0 Safari/537.36
User agent (network): Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3694.0 Mobile Safari/537.36 Chrome-Lighthouse
CPU/Memory Power: 850

Masalah

Ada beberapa rekomendasi yang diberikan Lighthouse, salah satunya adalah dibagian "Opportunities" yakni Remove unused CSS, karena memang ada beberapa file (dan selectors) yang tidak digunakan pada halaman tersebut.

Screen Shot 2019-04-22 at 22 26 21

Wow dihalaman index hanya 2.5% selector yang digunakan (untuk file tachyons), dan 32.9% untuk global dan chunked styles.

Kita bisa menyelesaikan masalah ini dengan bantuan tools seperti PurgeCSS atau PurifyCSS. Beruntung karena kita pakai Gridsome, sudah ada plugin untuk integrasi dengan PurgeCSS with less effort.

Pada PR ini saya integrasikan dengan fungsionalitas PurgeCSS, dan hasilnya:

Screen Shot 2019-04-22 at 23 23 04

First Meaningful Paint kita menjadi 2.3s! Score Performance pun bertambah dari yang sebelumnya 94 menjadi 98. Hal-hal yang saya lakukan adalah:

Load file CSS dari local

Sebelumnya saya load file-file CSS tersebut dari CDN, dengan alasan fast for prototype. Setelah prototype selesai, waktunya fokus ke performa sebelum menambah hutang teknikal lebih banyak. Caranya mudah, karena saya malas tinggal gunakan perintah ini:

$ curl some-cdn-url.tld/some-path/some-file.ext -o path/to/assets/ext/some-file.ext

Selesai!

Purge CSS alias jangan muat selector yang tidak digunakan

Karena saya menggunakan tachyons, ada beberapa selector yang tidak digunakan namun tetap termuat. Dan pastinya ini masalah, dengan bantuan PurgeCSS masalah ini terselesaikan meskipun tidak 100% akurat (tidak 100% hanya memuat selector yang dibutuhkan saja).

Inilah hasilnya setelah saya gunakan PurgeCSS:

Screen Shot 2019-04-22 at 23 29 47

Menjadi hanya sekitar 128kb yang tidak digunakan dari total 282kb. Setidaknya beda dengan yang sebelumnya yang mana total bytes yang tidak digunakan sekitar 221kb dari total bytes 349kb. Every byte counts, and little improvement is an improvement.

PR Lainnya

  • Ensure text remains visible during webfont load. Sudah ber-eksperimen dengan ini via (font-display), tapi tetap tidak berpengaruh (performance)
  • Serve static assets with an efficient cache policy. Tim google merekomendasikan untuk melakukan caching lebih lama, 1 tahun anjiiir. Sedangkan Netlify hanya menyimpan cache selama 4 jam. Mungkin ini bisa diselesaikan via serviceWorker. Done. 1 tahun.
  • Minimize Critical Requests Depth. Belum pernah nyari tau.
  • Aksesibilitas. Kita bahas di lain topik.

Hasil Lighthouse Terbaru

Bisa diakses disini

@faultables faultables added draft post still in progress performance make the web fast and removed draft post still in progress labels Apr 22, 2019
@faultables
Copy link
Author

Update:

Sedangkan Netlify hanya menyimpan cache selama 4 jam. Mungkin ini bisa diselesaikan via serviceWorker.

Sorry netlify this is not your fault. Problem solved, I have configured it via cloudflare.

@faultables
Copy link
Author

Update:

Serve static assets with an efficient cache policy. Tim google merekomendasikan untuk melakukan caching lebih lama... [truncated]

1 tahun! Ini penjelasannya:

Screen Shot 2019-04-23 at 00 06 09

@zainfathoni
Copy link

Mantap! 👍
Baru tahu kalau ada Coverage tool di Chrome Dev Tools buat ngecek CSS & JS Coverage. 😅

@r17x
Copy link
Collaborator

r17x commented Apr 23, 2019

@zainfathoni mantul , terima kasih sudah mampir kesini (ini playground kami bersama @108kb ) heheheh

@faultables
Copy link
Author

Baru tahu kalau ada Coverage tool di Chrome Dev Tools buat ngecek CSS & JS Coverage. 😅

Solusi kalau mau pakai lighthouse, tapi cuma mau cek coverage aja haha

@zainfathoni
Copy link

@zainfathoni mantul , terima kasih sudah mampir kesini (ini playground kami bersama @108kb ) heheheh

Oalah, 4L juga ternyata.
Loe Lagi Loe Lagi 🤣

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
performance make the web fast
Projects
None yet
Development

No branches or pull requests

3 participants