# Cara Mengatasi Website Lambat: Audit TTFB &amp; Core Web Vitals

> Skip to content ADTYAATechnology &amp; Digital Systems Capabilities Expertise Approach Proof About Essentials ENID中文 Consultation Capabilities Expertise Approach Proof About Essentials Consultation Beranda/Cara Mengatasi Website Lambat Cara Mengatasi Website Lambat: Audit Arsitektur &amp; Solusi Engineering Tanpa Bloat Oleh AdtyaaDiperbarui 11

- URL: https://medikabyte.com/cara-mengatasi-website-lambat/
- Diperbarui: 2026-10-16
- Penulis: Adtyaa
- Penerbit: ADTYAA (B2B digital agency)

Skip to content

[**ADTYAA** Technology & Digital Systems](https://medikabyte.com/)

**EN**

**ID**

**中文**

Consultation

[Capabilities](https://medikabyte.com/#capabilities)
[Expertise](https://medikabyte.com/#expertise)
[Approach](https://medikabyte.com/#approach)
[Proof](https://medikabyte.com/#proof)
[About](https://medikabyte.com/#about)
[Essentials](https://medikabyte.com/essentials/)
Consultation

# Cara Mengatasi Website Lambat: *Audit Arsitektur & Solusi Engineering Tanpa Bloat*

Oleh Adtyaa Diperbarui 11 Oktober 2026 Baca 10 menit

Halaman yang butuh beberapa detik untuk terbuka membuat calon klien pergi sebelum membaca satu kalimat pun, dan biaya iklan yang membawa mereka ke sana ikut terbuang. Cara mengatasi website lambat yang saya pakai bukan menumpuk plugin cache, melainkan membongkar akar masalahnya: respons server, database, aset, dan script. Panduan ini menjelaskan urutannya, lengkap dengan tabel diagnosis dan hasil pengukuran PageSpeed Insights yang saya tampilkan apa adanya.

**Ringkasnya**

Cara mengatasi website lambat dimulai dari mengukur, bukan menambah plugin: periksa TTFB di sisi server, lalu optimalkan LCP, INP, dan CLS sesuai ambang Google (LCP 2,5 detik, INP 200 milidetik, CLS 0,1). Penyebab terbesar biasanya respons server dan query database yang lambat, gambar hero yang berat, serta script pihak ketiga. Hapus beban yang tidak perlu sebelum menambah lapisan cache.

![Cara mengatasi website lambat melalui audit arsitektur web engineering](https://medikabyte.com/wp-content/uploads/2026/10/cara-mengatasi-website-lambat.jpg)

Audit arsitektur teknis dan eliminasi code bloat untuk mempercepat loading website.

## Audit kerugian bisnis: dampak kecepatan website terhadap SEO, konversi, dan budget iklan

Cara mengatasi website lambat yang benar dimulai dari hitungan bisnis: apa yang hilang. Dampak kecepatan website terhadap SEO dan konversi tidak berhenti di skor; ia menyentuh tiga tempat sekaligus.

- SEO: Core Web Vitals adalah bagian dari sinyal pengalaman halaman yang dinilai Google. [Dokumentasi Google Search Central](https://developers.google.com/search/docs/appearance/core-web-vitals) menegaskan bahwa relevansi konten tetap utama, tetapi halaman yang lambat dan tidak stabil mempersulit Anda memanfaatkan konten yang sudah bagus.
- Konversi: pengunjung yang pergi sebelum halaman termuat tidak pernah sampai ke tombol WhatsApp atau formulir. Kehilangan terjadi di langkah paling awal funnel, jadi tidak tampak di laporan konversi.
- Budget iklan: pengalaman halaman tujuan adalah salah satu komponen Quality Score di Google Ads. Halaman lambat menekan skor, menaikkan biaya per klik, dan membuat klien Anda membayar untuk kunjungan yang sia-sia.

Untuk mengukur kerugian Anda sendiri, bandingkan tiga angka: biaya iklan bulanan menuju halaman itu, persentase pengunjung yang pergi sebelum interaksi pertama, dan nilai satu konversi. Hasil kali ketiganya adalah perkiraan kasar anggaran yang terbuang karena halaman lambat. Karena itu cara mengatasi website lambat selalu dimulai dari satu pertanyaan bisnis, bukan dari plugin.

## Cara mengatasi website lambat dimulai dari diagnosis root-cause: 5 penyebab utama di level server dan database

Dalam cara mengatasi website lambat, penyebab website lambat diakses jarang berasal dari satu hal. Saya mengurutkannya dari hulu ke hilir, karena perbaikan di hilir tidak menolong bila hulunya macet.

1. TTFB tinggi: server lambat merespons karena sumber daya tidak memadai atau konfigurasi tidak tepat. Semua metrik lain ikut tertunda karena browser menunggu byte pertama.
2. Query database berat: tabel opsi yang membengkak, query berulang dari tema atau page builder, dan data lama yang tidak pernah dibersihkan membuat halaman butuh waktu lama dirakit di server.
3. Halaman dibangun ulang tiap permintaan: tanpa cache halaman dan cache objek yang tepat, server mengerjakan ulang pekerjaan yang sama untuk setiap pengunjung.
4. CSS dan JavaScript yang memblokir render: file besar dan font eksternal yang dimuat sinkron menahan tampilan pertama.
5. Gambar dan script pihak ketiga yang tidak dikendalikan: gambar hero berukuran besar, serta pixel, widget chat, dan tag manager yang menjejali thread utama.

Cara mengatasi website lambat per gejala saya rangkum dalam tabel berikut: apa yang terlihat, akar masalahnya, dan tindakannya.

| Gejala | Akar masalah | Solusi engineering |
| --- | --- | --- |
| Layar kosong lama sebelum konten muncul; TTFB tinggi di PageSpeed Insights atau DevTools | Respons server lambat atau halaman dirakit ulang tiap permintaan | Perbaiki konfigurasi server, aktifkan cache halaman dan cache objek, tinjau sumber daya hosting |
| Halaman admin dan halaman dinamis terasa berat | Query database berat, data opsi membengkak | Profil query, bersihkan data lama, kurangi query dari tema dan page builder |
| Teks atau hero muncul terlambat (LCP tinggi) | Gambar hero besar, CSS dan font memblokir render | Kompres dan sesuaikan ukuran gambar, muat dengan prioritas tinggi, inline CSS kritikal, tunda sisanya |
| Klik dan ketukan terasa tertahan (INP tinggi) | Tugas JavaScript panjang dan script pihak ketiga | Pecah script, tunda yang tidak kritikal, audit setiap tag yang dipasang |
| Tata letak bergeser saat memuat (CLS tinggi) | Gambar, iframe, atau iklan tanpa dimensi tetap; font berganti | Tentukan lebar dan tinggi, sediakan ruang tetap untuk embed, atur font fallback |

## Arsitektur zero-bloat: cara mempercepat loading website tanpa plugin

Cara mengatasi website lambat lewat mempercepat loading website tanpa plugin bukan dogma, melainkan prinsip urutan: hapus beban yang tidak perlu dulu, baru tambah lapisan optimasi. Plugin cache yang dipasang di atas situs yang membengkak hanya menyembunyikan masalah. Berikut fondasi zero-bloat dalam cara mengatasi website lambat versi saya:

- Server dan jaringan: kompresi respons, header cache yang benar untuk aset statis, protokol HTTP modern, dan CDN bila audiens tersebar lintas negara.
- Database: pangkas revisi, data sementara, dan opsi yang dimuat pada setiap permintaan, lalu periksa query yang berulang.
- Aset: kirim hanya CSS dan JavaScript yang dipakai halaman itu, inline CSS kritikal, dan tunda yang lain. Matikan script bawaan CMS yang tidak digunakan lewat konfigurasi tema.
- Font: preconnect ke penyedia font, batasi bobot yang dipakai, dan muat tanpa memblokir render dengan display swap.
- Gambar: format modern, ukuran sesuai tampilan, atribut lebar dan tinggi, lazy-load untuk gambar di bawah layar, dan prioritas tinggi untuk gambar hero.

Pola yang sama saya terapkan di halaman ini: satu dokumen dengan CSS inline, stylesheet font dimuat tanpa memblokir, gambar berdimensi tetap dengan lazy loading, dan animasi digerakkan oleh IntersectionObserver, bukan pustaka tambahan. Ini bagian dari pendekatan [web engineering dan ad tech di ADTYAA](https://medikabyte.com/#capabilities): performa dirancang sejak arsitektur, bukan ditambal di akhir.

### Situs Anda lambat dan penyebabnya belum jelas?

Kirim alamat situs dan hasil PageSpeed Insights Anda lewat WhatsApp. Saya bantu tunjukkan hal pertama yang perlu diperiksa.

[Minta Audit Kecepatan via WhatsApp](https://wa.me/6281411188809) Kirim Brief Proyek

## Cara mengatasi website lambat di sisi pengguna: framework Core Web Vitals (LCP, INP, CLS) sebagai fondasi Gemini Overview

Cara mengatasi website lambat di sisi pengguna berpusat pada Core Web Vitals, dan cara optimasi Core Web Vitals paling efisien jika dikerjakan per metrik. Menurut [panduan web.dev](https://web.dev/articles/vitals), ambang baik diukur pada persentil ke-75 data lapangan: LCP 2,5 detik atau kurang, INP 200 milidetik atau kurang, dan CLS 0,1 atau kurang.

- LCP: mulai dari TTFB (lihat [panduan TTFB](https://web.dev/articles/ttfb)), lalu muat gambar hero dengan prioritas tinggi, jangan di-lazy-load, dan singkirkan CSS yang memblokir render.
- INP: pecah tugas JavaScript panjang, tunda script pihak ketiga, dan pastikan penangan interaksi ringan.
- CLS: beri lebar dan tinggi pada gambar dan iframe, sediakan ruang tetap untuk embed, dan atur font fallback agar tidak melompat.

Soal Gemini Overview, saya luruskan satu hal: tidak ada jalur khusus yang menjamin halaman Anda dikutip. Yang ada adalah fondasi yang sama dengan SEO teknis: halaman bisa dirayapi, cepat, dan isinya jelas serta terstruktur. Core Web Vitals yang sehat menjaga fondasi itu tetap kokoh, sementara jawaban langsung di awal artikel dan schema yang rapi membantu mesin memahami isi halaman.

Berikut hasil pengukuran beranda adtyaa.cloud pada PageSpeed Insights, tampilan Mobile, laporan 11 Oktober 2026 pukul 18.48.17. Performa 96, Aksesibilitas 100, Praktik Terbaik 100, dan SEO 100.

![Visual hasil PageSpeed Insights mobile: Performa 96, Aksesibilitas, Praktik Terbaik, dan SEO 100](https://medikabyte.com/wp-content/uploads/2026/10/visual-hasil-page-speed-wesbsite.jpg)

Hasil PageSpeed Insights mobile beranda adtyaa.cloud: Performa 96, Aksesibilitas 100, Praktik Terbaik 100, dan SEO 100.

Dua catatan agar angka ini terbaca jujur. Pertama, Performa 96, bukan 100; skor lab bergeser antar pengujian dan saya tidak mengejar angka sempurna. Kedua, bagian pengalaman pengguna sebenarnya menampilkan Tidak Ada Data, artinya skor di atas adalah data lab, bukan Core Web Vitals dari pengguna nyata. Data lapangan baru terisi bila trafik cukup, dan itulah yang akhirnya dinilai.

## Matrix evaluasi dan kriteria memilih jasa optimasi kecepatan website enterprise

Bila cara mengatasi website lambat versi dasar sudah dicoba dan hasilnya belum cukup, jasa optimasi kecepatan website layak dipertimbangkan. Tabel berikut membantu Anda menilai penyedia sebelum menandatangani apa pun.

| Kriteria | Yang perlu Anda minta | Kekhawatiran |
| --- | --- | --- |
| Diagnosis | Rincian TTFB, waterfall, dan akar masalah sebelum tindakan | Langsung menjanjikan perbaikan tanpa audit |
| Pengukuran | Data lab dan data lapangan, sebelum dan sesudah | Hanya menunjukkan satu skor dan satu tangkapan layar |
| Kedalaman teknis | Akses ke server, database, dan kode, bukan hanya pengaturan plugin | Solusi hanya memasang plugin cache |
| Keamanan fungsi | Uji formulir, tombol WhatsApp, dan pelacakan konversi setelah perubahan | Tidak ada pengujian regresi |
| Kepatuhan sektor sensitif | Pemahaman kebutuhan situs medis dan YMYL, termasuk script pelacakan | Menghapus script tanpa memahami fungsinya |
| Dokumentasi | Catatan perubahan dan rencana rollback | Perubahan tidak tercatat |

Pertimbangan ini sama pentingnya bagi jaringan rumah sakit dan brand B2B, karena situs mereka biasanya memuat banyak integrasi dan menanggung trafik iklan. Untuk paket dan harga, lihat halaman [Essentials](https://medikabyte.com/essentials/), dan untuk mengenal pengerjanya, baca tentang profil [ADTYAA](https://medikabyte.com/#about).

Pada akhirnya, cara mengatasi website lambat adalah soal urutan: ukur, diagnosis, hapus beban yang tidak perlu, baru optimasi. Penyedia yang membalik urutan itu biasanya menjual plugin, bukan solusi.

### Ingin kecepatan situs Anda diaudit langsung?

Ceritakan kondisi situs dan tujuan bisnis Anda lewat WhatsApp. Saya akan membaca masalahnya dengan urutan audit di atas dan menyampaikan prioritas perbaikannya.

[Minta Audit Kecepatan via WhatsApp](https://wa.me/6281411188809) Kirim Brief Proyek

## Cara Mengatasi Website Lambat: Pertanyaan yang Sering Diajukan

**Apa penyebab website lambat diakses?**

Penyebab yang paling sering ada di sisi server dan database: TTFB tinggi akibat sumber daya server yang tidak memadai, query database berat, halaman dinamis yang dibangun ulang pada setiap permintaan, CSS dan JavaScript yang memblokir render, serta gambar dan script pihak ketiga yang tidak dikendalikan. Ukur dulu dengan PageSpeed Insights dan DevTools agar tahu mana yang dominan.

**Apa cara optimasi Core Web Vitals yang paling berdampak?**

Mulai dari LCP, karena biasanya paling mudah dilacak: percepat respons server, muat gambar hero dengan prioritas tinggi dan jangan di-lazy-load, serta hapus CSS yang memblokir render. Setelah itu kurangi tugas JavaScript panjang untuk INP, dan beri dimensi tetap pada gambar dan embed untuk CLS. Ambang baik menurut Google: LCP 2,5 detik atau kurang, INP 200 milidetik atau kurang, CLS 0,1 atau kurang.

**Apakah mempercepat loading website tanpa plugin benar-benar bisa?**

Cara mengatasi website lambat tanpa plugin tambahan bisa untuk sebagian besar fungsi dasar: kompresi dan cache header di server, pemuatan font dan gambar yang benar, penundaan script, serta pembersihan database dilakukan lewat konfigurasi dan kode. Plugin tidak haram, tetapi tidak boleh menjadi fondasi. Hapus beban yang tidak perlu lebih dulu sebelum menambah lapisan baru.

**Kapan saya butuh jasa optimasi kecepatan website?**

Saat perbaikan dasar sudah dicoba tetapi TTFB atau LCP tetap tinggi, saat situs memakai page builder dan banyak integrasi pihak ketiga, atau saat trafik iklan sudah besar sehingga setiap detik keterlambatan menggerus anggaran. Pilih penyedia yang memulai dari diagnosis dan mau menunjukkan pengukuran sebelum dan sesudah.

**Apa dampak kecepatan website terhadap SEO dan konversi?**

Core Web Vitals menjadi bagian dari pengalaman halaman yang dinilai Google, walau relevansi konten tetap faktor utama. Untuk konversi, halaman yang lambat membuat calon klien pergi sebelum menekan tombol WhatsApp atau mengisi formulir. Pada iklan, pengalaman halaman tujuan memengaruhi Quality Score sehingga ikut menentukan biaya per klik.

**Apakah skor PageSpeed Insights harus 100?**

Tidak. Skor lab berubah antar pengujian dan perangkat, jadi jangan mengejar angka sempurna. Yang lebih penting adalah data lapangan (pengguna nyata) berada di ambang baik untuk LCP, INP, dan CLS, dan bahwa perbaikan tidak merusak fungsi seperti formulir dan pelacakan konversi.

Project brief

## Share your requirement.

Describe what you are building, what is not performing, or what needs to improve. I will review the brief and respond within 24 hours.

WhatsApp / Phone [0814 111 888 09](tel:+6281411188809)

Email [hallo@adtyaa.cloud](mailto:hallo@adtyaa.cloud)

Base **Jakarta, Indonesia**

Location

## Find us on Google Maps.

In-person meetings are by appointment. Please message first so a time can be confirmed.

### DJURAGAN IKLAN ID

Founded by ADTYAA

Jl. Green Pramuka City No.9 13, RT.13/RW.9, Rawasari, Kec. Cempaka Putih, Kota Jakarta Pusat, DKI Jakarta 10570

#### Opening hours

Mon, Wed to Sat 08:00 – 21:30

Tuesday 08:00 – 21:00

Sunday 09:00 – 21:30

[Get directions](https://www.google.com/maps/dir/?api=1&destination=-6.1883766,106.8732792&destination_place_id=ChIJKcjnOqb1aS4RfbYD_EKMv84)
[Chat on WhatsApp](https://wa.me/6281411188809)
[Call now](tel:+6281411188809)

Build what your business depends on.

## Let’s build something worth depending on.

One accountable technology partner across engineering, growth, security, and digital infrastructure.

Request a consultation [Explore capabilities](https://medikabyte.com/#capabilities)

[**ADTYAA**](https://medikabyte.com/)

Digital Systems & Technology Consultancy

Aditya

Founder & Technology Strategist

Djuragan Iklan

Navigate

- [Capabilities](https://medikabyte.com/#capabilities)
- [Expertise](https://medikabyte.com/#expertise)
- [Approach](https://medikabyte.com/#approach)
- [About](https://medikabyte.com/#about)
- Location
- Contact

Capabilities

- [Software Engineering](https://medikabyte.com/#capabilities)
- [Digital Engineering](https://medikabyte.com/#capabilities)
- [Growth Systems](https://medikabyte.com/#capabilities)
- [Security & Infrastructure](https://medikabyte.com/#capabilities)
- [Medical SEO](https://medikabyte.com/#medical)
- [Custom Plugins](https://medikabyte.com/essentials/)
- [Custom Themes](https://medikabyte.com/essentials/)
- [Add-ons & Care Plans](https://medikabyte.com/essentials/)

Contact

[WhatsApp](https://wa.me/6281411188809)
[hallo@adtyaa.cloud](mailto:hallo@adtyaa.cloud)
Jakarta, Indonesia

ADTYAA

© 2026 ADTYAA. All rights reserved.

[Essentials](https://medikabyte.com/essentials/)

[Chat on WhatsApp](https://wa.me/6281411188809)

var D = {"skip":["Skip to content","Lewati ke konten","跳到主要内容"],"menu":["Menu","Menu","菜单"],"lang.group":["Language","Bahasa","语言"],"nav.cap":["Capabilities","Keahlian","核心能力"],"nav.work":["Expertise","Spesialisasi","行业专长"],"nav.app":["Approach","Pendekatan","合作流程"],"nav.proof":["Proof","Bukti","实绩"],"nav.about":["About","Tentang","关于"],"nav.ess":["Essentials","Essentials","Essentials"],"nav.cta":["Consultation","Konsultasi","预约咨询"],"nav.contact":["Contact","Kontak","联系我们"],"bag.aria":["ADTYAA Essentials: services, themes, plugins, and add-ons","ADTYAA Essentials: jasa, tema, plugin, dan add-on","ADTYAA Essentials：服务、主题、插件与附加服务"],"hero.cta1":["Request a consultation","Jadwalkan konsultasi","预约咨询"],"hero.cta2":["Explore capabilities","Jelajahi keahlian","了解核心能力"],"hero.role":["Founder & Technology Strategist","Founder & Technology Strategist","创始人 · 技术战略顾问"],"cap4.title":["Software Engineering","Software Engineering","软件工程"],"cap1.title":["Digital Engineering","Digital Engineering","数字工程"],"cap2.title":["Growth Systems","Growth Systems","增长体系"],"cap3.title":["Security & Infrastructure","Security & Infrastructure","安全与基础设施"],"opt.med":["Medical SEO","SEO Medis","医疗 SEO"],"opt.other":["Other / Not sure yet","Lainnya / Belum yakin","其他 / 尚未确定"],"contact.label":["Project brief","Brief proyek","项目简报"],"contact.title":["Share your requirement.","Sampaikan kebutuhan Anda.","请告诉我们您的需求。"],"contact.copy":["Describe what you are building, what is not performing, or what needs to improve. I will review the brief and respond within 24 hours.","Jelaskan apa yang sedang Anda bangun, apa yang belum berjalan optimal, atau apa yang perlu ditingkatkan. Saya akan mempelajari brief dan merespons dalam 24 jam.","请描述您正在构建的内容、表现不佳之处或需要改进的方面。我会审阅简报并在 24 小时内回复，咨询以英文进行。"],"contact.wa":["WhatsApp / Phone","WhatsApp / Telepon","WhatsApp / 电话"],"contact.loc":["Base","Lokasi","所在地"],"contact.city":["Jakarta, Indonesia","Jakarta, Indonesia","印度尼西亚 · 雅加达"],"form.name":["Name *","Nama *","姓名 *"],"form.email":["Email","Email","邮箱"],"form.wa":["WhatsApp","WhatsApp","WhatsApp"],"form.url":["Website","Website","网站"],"form.service":["Capability *","Keahlian *","所需能力 *"],"form.choose":["Choose a capability","Pilih keahlian","请选择能力方向"],"form.eng":["Engagement","Jenis kerja sama","合作类型"],"form.time":["Timeline","Target waktu","时间安排"],"form.choose2":["Choose one","Pilih salah satu","请选择"],"form.msg":["Project / problem","Proyek / masalah","项目 / 问题"],"form.sendwa":["Send via WhatsApp","Kirim lewat WhatsApp","通过 WhatsApp 发送"],"form.sendmail":["Send via email","Kirim lewat email","通过邮件发送"],"form.note":["Your brief opens in WhatsApp or your email application. Nothing is stored on this page.","Brief Anda terbuka di WhatsApp atau aplikasi email, siap dikirim. Tidak ada data yang disimpan di halaman ini.","您的简报将在 WhatsApp 或邮件应用中打开，供您发送。本页面不会保存任何数据。"],"eng.1":["One-time fix or setup","Perbaikan atau setup sekali jalan","一次性修复或设置"],"eng.2":["Full project","Proyek penuh","完整项目"],"eng.3":["Ongoing monthly support","Dukungan bulanan berkelanjutan","持续月度支持"],"eng.4":["Not sure yet","Belum yakin","尚未确定"],"time.1":["As soon as possible","Secepatnya","尽快"],"time.2":["Within 1 month","Dalam 1 bulan","1 个月内"],"time.3":["Within 3 months","Dalam 3 bulan","3 个月内"],"time.4":["Flexible","Fleksibel","灵活"],"f.err":["Please enter your name and choose a capability first.","Isi nama dan pilih keahlian terlebih dahulu.","请先填写姓名并选择能力方向。"],"f.okwa":["Opening WhatsApp...","Membuka WhatsApp...","正在打开 WhatsApp…"],"f.okmail":["Opening your email application...","Membuka aplikasi email Anda...","正在打开邮件应用…"],"m.name":["Name","Nama","Name"],"m.email":["Email","Email","Email"],"m.wa":["WhatsApp","WhatsApp","WhatsApp"],"m.url":["Website","Website","Website"],"m.service":["Capability","Keahlian","Capability"],"m.eng":["Engagement","Jenis kerja sama","Engagement"],"m.time":["Timeline","Target waktu","Timeline"],"m.msg":["Message","Pesan","Message"],"m.subject":["Project enquiry","Permintaan proyek","Project enquiry"],"loc.label":["Location","Lokasi","地点"],"loc.title":["Find us on Google Maps.","Temukan kami di Google Maps.","在 Google 地图上找到我们。"],"loc.lead":["In-person meetings are by appointment. Please message first so a time can be confirmed.","Pertemuan langsung dengan janji temu. Kirim pesan terlebih dahulu agar waktunya dapat dikonfirmasi.","现场会面需提前预约。请先发送消息以确认时间。"],"loc.founded":["Founded by ADTYAA","Founded by ADTYAA","由 ADTYAA 创立"],"loc.hours":["Opening hours","Jam operasional","营业时间"],"loc.d1":["Mon, Wed to Sat","Sen, Rab sampai Sab","周一、周三至周六"],"loc.d2":["Tuesday","Selasa","周二"],"loc.d3":["Sunday","Minggu","周日"],"loc.dir":["Get directions","Petunjuk arah","获取路线"],"loc.wa":["Chat on WhatsApp","Chat via WhatsApp","通过 WhatsApp 洽谈"],"loc.call":["Call now","Telepon sekarang","立即致电"],"loc.map":["DJURAGAN IKLAN ID on Google Maps","DJURAGAN IKLAN ID di Google Maps","DJURAGAN IKLAN ID 的 Google 地图位置"],"final.label":["Build what your business depends on.","Bangun sistem yang diandalkan bisnis Anda.","构建您的业务所依赖的系统。"],"final.title":["Let's build something worth depending on.","Mari bangun sesuatu yang layak diandalkan.","让我们共同构建值得依赖的系统。"],"final.copy":["One accountable technology partner across engineering, growth, security, and digital infrastructure.","Satu partner teknologi yang akuntabel untuk engineering, growth, keamanan, dan infrastruktur digital.","一个对结果负责的技术合作方，覆盖工程、增长、安全与数字基础设施。"],"foot.nav":["Navigate","Navigasi","导航"],"foot.cap":["Capabilities","Keahlian","核心能力"],"foot.con":["Contact","Kontak","联系"],"foot.plugins":["Custom Plugins","Plugin Kustom","定制插件"],"foot.themes":["Custom Themes","Tema Kustom","定制主题"],"foot.addons":["Add-ons & Care Plans","Add-on & Paket Perawatan","附加服务与维护计划"],"foot.rights":["All rights reserved.","Hak cipta dilindungi.","保留所有权利。"],"dock.group":["Quick contact","Kontak cepat","快速联系"],"dock.wa":["Chat on WhatsApp","Chat via WhatsApp","通过 WhatsApp 洽谈"],"dock.maps":["Open in Google Maps","Buka di Google Maps","在 Google 地图中打开"],"dock.call":["Call now","Telepon sekarang","立即致电"],"wa.general":["Hello Adtyaa, I read your article on fixing a slow website and would like to discuss my business.", "Hello Adtyaa, I read your article on fixing a slow website and would like to discuss my business.", "Hello Adtyaa, I read your article on fixing a slow website and would like to discuss my business."],"wa.article":["Hello Adtyaa, I read your guide on how to fix a slow website and would like a speed audit for my website.", "Hello Adtyaa, I read your guide on how to fix a slow website and would like a speed audit for my website.", "Hello Adtyaa, I read your guide on how to fix a slow website and would like a speed audit for my website."],"a.home":["Home","Beranda","首页"],"a.m1":["By Adtyaa","Oleh Adtyaa","作者：Adtyaa"],"a.m2":["10 October 2026","10 Oktober 2026","2026 年 10 月 10 日"],"a.m3":["9 min read","Baca 9 menit","阅读约 9 分钟"],"a.toc":["In this article","Dalam artikel ini","本文内容"],"cta.b1":["Talk to ADTYAA on WhatsApp","Hubungi ADTYAA lewat WhatsApp","通过 WhatsApp 联系 ADTYAA"],"cta.b2":["Send a project brief","Kirim brief proyek","提交项目简报"],"au.name":["Adtyaa, Founder of [DJURAGAN IKLAN ID<\/a>","Adtyaa, Founder of](https://maps.app.goo.gl/YRw1yaWB5xfHcjwq5) [DJURAGAN IKLAN ID<\/a>","Adtyaa，](https://maps.app.goo.gl/YRw1yaWB5xfHcjwq5) [DJURAGAN IKLAN ID<\/a> 创始人"],"au.bio":["Builds professional websites, SEO and digital advertising systems for B2B brands and startups.","Membangun website profesional, SEO, dan sistem iklan digital untuk brand B2B dan startup.","为 B2B 品牌与初创企业构建专业网站、SEO 与数字广告体系。"],"au.cta":["Talk to ADTYAA on WhatsApp","Hubungi ADTYAA lewat WhatsApp","通过 WhatsApp 联系 ADTYAA"],"au.alt":["Adtyaa, author of the B2B marketing agency Indonesia guide","Adtyaa, penulis panduan B2B marketing agency Indonesia","Adtyaa，B2B marketing agency Indonesia 指南作者"]}; var LI = { en: 0, id: 1, zh: 2 }; var L = "id"; var PHONE = "6281411188809", MAIL = "hallo@adtyaa.cloud";](https://maps.app.goo.gl/YRw1yaWB5xfHcjwq5)

function $(sel, ctx) { return Array.prototype.slice.call((ctx || root).querySelectorAll(sel)); } function byId(id) { return document.getElementById(id); } function t(key, lang) { var e = D[key]; if (!e) { return key; } var v = e[LI[lang || L]]; return (v === undefined || v === "") ? e[0] : v; } function msgLang() { return "id"; } function waUrl(m) { return "https://wa.me/" + PHONE + "?text=" + encodeURIComponent(m); }

var scLoaded = false; function loadSC() { if (scLoaded) { return; } scLoaded = true; var l = document.createElement("link"); l.rel = "stylesheet"; l.href = "https://fonts.googleapis.com/css2?family=Noto+Sans+SC:wght@300;400;500;700&display=swap"; document.head.appendChild(l); } function apply() { if (L === "zh") { loadSC(); } document.documentElement.setAttribute("lang", L === "zh" ? "zh-Hans" : L); root.setAttribute("data-l", L); $("[data-i18n]").forEach(function (el) { el.textContent = t(el.getAttribute("data-i18n")); }); $("[data-i18n-html]").forEach(function (el) { el.innerHTML = t(el.getAttribute("data-i18n-html")); }); $("[data-i18n-alt]").forEach(function (el) { el.setAttribute("alt", t(el.getAttribute("data-i18n-alt"))); }); $("[data-i18n-title]").forEach(function (el) { el.setAttribute("title", t(el.getAttribute("data-i18n-title"))); }); $("[data-i18n-aria]").forEach(function (el) { el.setAttribute("aria-label", t(el.getAttribute("data-i18n-aria"))); }); $("[data-wa]").forEach(function (el) { el.setAttribute("href", waUrl(t(el.getAttribute("data-wa"), msgLang()))); }); $("[data-lang]").forEach(function (b) { b.setAttribute("aria-pressed", b.getAttribute("data-lang") === L ? "true" : "false"); }); var st = byId("fs"); if (st) { st.textContent = ""; st.classList.remove("err"); } }

root.addEventListener("click", function (e) { var b = e.target.closest ? e.target.closest("[data-lang]") : null; if (!b) { return; } L = b.getAttribute("data-lang"); apply(); });

(function initLang() { var pick = null; try { var q = new URLSearchParams(window.location.search || "").get("lang"); if (q && LI[q] !== undefined) { pick = q; } } catch (x) {} if (pick) { L = pick; } })();

var hd = byId("hd"), bg = byId("bg"), mn = byId("mn"); var bar = root.querySelector(".prog span"); var ticking = false; function onScroll() { ticking = false; if (hd) { hd.classList.toggle("sc", window.scrollY > 8); } if (bar) { var h = document.documentElement.scrollHeight - window.innerHeight; var p = h > 0 ? Math.min(1, Math.max(0, window.scrollY / h)) : 0; bar.style.transform = "scaleX(" + p.toFixed(4) + ")"; } } window.addEventListener("scroll", function () { if (!ticking) { ticking = true; window.requestAnimationFrame(onScroll); } }, { passive: true }); onScroll();

function closeMenu() { if (mn) { mn.classList.remove("on"); } if (bg) { bg.setAttribute("aria-expanded", "false"); } } if (bg && mn) { bg.addEventListener("click", function () { var on = mn.classList.toggle("on"); bg.setAttribute("aria-expanded", on ? "true" : "false"); }); mn.addEventListener("click", function (e) { if (e.target.closest && e.target.closest("a")) { closeMenu(); } }); } document.addEventListener("keydown", function (e) { if (e.key === "Escape") { closeMenu(); } }); window.addEventListener("resize", function () { if (window.innerWidth > 1000) { closeMenu(); } });

var form = byId("cf"); if (form) { var fs = byId("fs"); var val = function (id) { var el = byId(id); return el ? el.value.trim() : ""; }; var optText = function (id) { var el = byId(id); if (!el || !el.value) { return ""; } var key = el.options[el.selectedIndex].getAttribute("data-i18n"); return key ? t(key, msgLang()) : el.options[el.selectedIndex].text; }; var setStatus = function (key, err) { fs.textContent = key ? t(key) : ""; fs.classList.toggle("err", !!err); }; var validate = function () { var ok = true; ["f-name", "f-service"].forEach(function (id) { var el = byId(id), bad = !el.value.trim(); el.setAttribute("aria-invalid", bad ? "true" : "false"); if (bad) { ok = false; } }); return ok; }; var compose = function () { var ml = msgLang(), lines = [t("wa.general", ml), ""]; var add = function (k, v) { if (v) { lines.push(t(k, ml) + ": " + v); } }; add("m.name", val("f-name")); add("m.email", val("f-email")); add("m.wa", val("f-wa")); add("m.url", val("f-url")); add("m.service", optText("f-service")); add("m.eng", optText("f-eng")); add("m.time", optText("f-time")); var m = val("f-msg"); if (m) { lines.push(""); lines.push(t("m.msg", ml) + ":"); lines.push(m); } return lines.join("\n"); }; byId("send-wa").addEventListener("click", function () { if (!validate()) { setStatus("f.err", true); return; } setStatus("f.okwa", false); window.open(waUrl(compose()), "_blank", "noopener"); }); byId("send-mail").addEventListener("click", function () { if (!validate()) { setStatus("f.err", true); return; } setStatus("f.okmail", false); var subject = t("m.subject", msgLang()) + " - " + val("f-name"); window.location.href = "mailto:" + MAIL + "?subject=" + encodeURIComponent(subject) + "&body=" + encodeURIComponent(compose()); }); form.addEventListener("submit", function (e) { e.preventDefault(); byId("send-wa").click(); }); ["f-name", "f-service"].forEach(function (id) { var el = byId(id); var clear = function () { if (el.value.trim()) { el.setAttribute("aria-invalid", "false"); } }; el.addEventListener("input", clear); el.addEventListener("change", clear); }); }

apply();

var reduce = window.matchMedia && window.matchMedia("(prefers-reduced-motion: reduce)").matches;

function initFx(host) { if (!host) { return; } var cv = document.createElement("canvas"); cv.className = "fx"; cv.setAttribute("aria-hidden", "true"); host.insertBefore(cv, host.firstChild); var ctx = cv.getContext("2d"); if (!ctx) { return; } var W = 1, H = 1, stars = [], dust = [], nodes = [], mx = -9999, my = -9999, onScreen = true; var sprite = document.createElement("canvas"); sprite.width = sprite.height = 48; var sg = sprite.getContext("2d"), grad = sg.createRadialGradient(24, 24, 0, 24, 24, 24); grad.addColorStop(0, "rgba(255,243,209,1)"); grad.addColorStop(.25, "rgba(230,200,140,.55)"); grad.addColorStop(1, "rgba(201,164,92,0)"); sg.fillStyle = grad; sg.fillRect(0, 0, 48, 48); function rnd(a, b) { return a + Math.random() * (b - a); } function seed() { var a = W * H, i; stars = []; dust = []; nodes = []; for (i = 0; i < Math.round(a / 9000); i++) { stars.push({ x: rnd(0, W), y: rnd(0, H), r: rnd(.3, 1.05), p: rnd(0, 6.28), s: rnd(.5, 1.6) }); } for (i = 0; i < Math.round(Math.min(46, 16 + a / 42000)); i++) { dust.push({ x: rnd(0, W), y: rnd(0, H), r: rnd(1.4, 3.6), vy: rnd(.1, .38), vx: rnd(-.07, .07), a: rnd(.25, .65), p: rnd(0, 6.28) }); } for (i = 0; i < Math.round(Math.min(64, Math.max(20, a / 24000))); i++) { nodes.push({ x: rnd(0, W), y: rnd(0, H), vx: rnd(-.12, .12), vy: rnd(-.1, .1) }); } } function size() { var r = host.getBoundingClientRect(), dpr = Math.min(window.devicePixelRatio || 1, 2); W = Math.max(1, r.width); H = Math.max(1, r.height); cv.width = Math.round(W * dpr); cv.height = Math.round(H * dpr); ctx.setTransform(dpr, 0, 0, dpr, 0, 0); seed(); draw(0, true); } function draw(t, still) { var i, j, n, m, dx, dy, d, al; ctx.clearRect(0, 0, W, H); for (i = 0; i < stars.length; i++) { n = stars[i]; al = .2 + .6 * (.5 + .5 * Math.sin(t * .001 * n.s + n.p)); ctx.fillStyle = "rgba(243,232,205," + (al * .75).toFixed(3) + ")"; ctx.beginPath(); ctx.arc(n.x, n.y, n.r, 0, 6.2832); ctx.fill(); } for (i = 0; i < nodes.length; i++) { n = nodes[i]; if (!still) { n.x += n.vx; n.y += n.vy; if (n.x < -10) { n.x = W + 10; } else if (n.x > W + 10) { n.x = -10; } if (n.y < -10) { n.y = H + 10; } else if (n.y > H + 10) { n.y = -10; } } for (j = i + 1; j < nodes.length; j++) { m = nodes[j]; dx = n.x - m.x; dy = n.y - m.y; if (dx > 150 || dx < -150 || dy > 150 || dy < -150) { continue; } d = Math.sqrt(dx * dx + dy * dy); if (d < 150) { ctx.strokeStyle = "rgba(217,188,130," + ((1 - d / 150) * .2).toFixed(3) + ")"; ctx.lineWidth = .7; ctx.beginPath(); ctx.moveTo(n.x, n.y); ctx.lineTo(m.x, m.y); ctx.stroke(); } } dx = n.x - mx; dy = n.y - my; d = Math.sqrt(dx * dx + dy * dy); if (d < 190) { ctx.strokeStyle = "rgba(246,231,189," + ((1 - d / 190) * .5).toFixed(3) + ")"; ctx.lineWidth = .9; ctx.beginPath(); ctx.moveTo(n.x, n.y); ctx.lineTo(mx, my); ctx.stroke(); } ctx.fillStyle = "rgba(230,205,150,.7)"; ctx.beginPath(); ctx.arc(n.x, n.y, 1.25, 0, 6.2832); ctx.fill(); } for (i = 0; i < dust.length; i++) { n = dust[i]; if (!still) { n.y -= n.vy; n.x += n.vx + Math.sin(t * .0006 + n.p) * .12; if (n.y < -12) { n.y = H + 12; n.x = rnd(0, W); } } ctx.globalAlpha = n.a * (.65 + .35 * Math.sin(t * .0012 + n.p)); ctx.drawImage(sprite, n.x - n.r * 3, n.y - n.r * 3, n.r * 6, n.r * 6); } ctx.globalAlpha = 1; } function loop(ts) { if (onScreen && !document.hidden) { draw(ts, false); } window.requestAnimationFrame(loop); } size(); if ("ResizeObserver" in window) { new ResizeObserver(function () { size(); }).observe(host); } else { window.addEventListener("resize", size); } if (reduce) { return; } if ("IntersectionObserver" in window) { new IntersectionObserver(function (es) { es.forEach(function (en) { onScreen = en.isIntersecting; }); }, { rootMargin: "100px" }).observe(host); } host.addEventListener("pointermove", function (e) { var r = host.getBoundingClientRect(); mx = e.clientX - r.left; my = e.clientY - r.top; }); host.addEventListener("pointerleave", function () { mx = -9999; my = -9999; }); window.requestAnimationFrame(loop); } initFx(root.querySelector(".ah")); initFx(root.querySelector(".final")); initFx(root.querySelector(".au")); if (reduce || !("IntersectionObserver" in window)) { return; } if (!document.body.classList.contains("elementor-editor-active")) { root.classList.add("js"); var rv = new IntersectionObserver(function (es) { es.forEach(function (en) { if (!en.isIntersecting) { return; } en.target.classList.add("in"); rv.unobserve(en.target); }); }, { threshold: 0, rootMargin: "0px 0px -6% 0px" }); $(".rv").forEach(function (el) { rv.observe(el); }); } })();

tetap bisa diseleksi/disalin. */ (function(){ 'use strict'; if(window.__cgOn)return;window.__cgOn=1; if(document.body&&document.body.classList.contains('elementor-editor-active'))return;

var doc=document; var EDITABLE="input,textarea,select,[contenteditable='true']"; var COPYABLE='.cm,address';

doc.documentElement.classList.add('cg-on');

function inEditable(el){return !!(el&&el.closest&&el.closest(EDITABLE))} function block(e){e.preventDefault()}

doc.addEventListener('contextmenu',function(e){ if(!inEditable(e.target))block(e); });

doc.addEventListener('dragstart',block);

doc.addEventListener('selectstart',function(e){ var t=e.target&&e.target.nodeType===1?e.target:(e.target&&e.target.parentElement); if(inEditable(t)||(t&&t.closest&&t.closest(COPYABLE)))return; block(e); });

doc.addEventListener('keydown',function(e){ var k=e.code,mod=e.ctrlKey||e.metaKey,stop=false; if(k==='F12'){ stop=true; }else if(mod&&!e.shiftKey&&!e.altKey&&(k==='KeyS'||k==='KeyU')){ stop=true; /* Ctrl/Cmd + S, U */ }else if( (mod&&e.shiftKey&&(k==='KeyI'||k==='KeyJ'||k==='KeyC'))|| /* Ctrl/Cmd + Shift + I, J, C */ (e.metaKey&&e.altKey&&(k==='KeyI'||k==='KeyJ'||k==='KeyC'||k==='KeyU')) /* Cmd + Option + I, J, C, U (Mac) */ ){ stop=true; } if(stop){block(e);e.stopPropagation()} },true);

/* Desktop saja: bila panel dev tools terbuka (docked), bersihkan console saat jendela di-resize */ if(window.matchMedia&&window.matchMedia('(hover:hover) and (pointer:fine)').matches){ var raf=0; window.addEventListener('resize',function(){ if(raf)return; raf=requestAnimationFrame(function(){ raf=0; if((window.outerWidth-window.innerWidth>200||window.outerHeight-window.innerHeight>260)&&window.console&&console.clear){console.clear()} }); },{passive:true}); } }());

tetap bisa diseleksi/disalin. */ (function(){ 'use strict'; if(window.__cgOn)return;window.__cgOn=1; if(document.body&&document.body.classList.contains('elementor-editor-active'))return;

var doc=document,root=doc.documentElement; var EDITABLE="input,textarea,select,[contenteditable='true']"; var COPYABLE='.cm,address'; var WM_MS=5000; /* lama watermark tampil setelah screenshot terdeteksi */ var wm=null,wmTimer=0;

root.classList.add('cg-on');

function inEditable(el){return !!(el&&el.closest&&el.closest(EDITABLE))} function block(e){e.preventDefault()}

/* ---------- Watermark screenshot ---------- */ function showWatermark(){ if(!wm){ if(!doc.body)return; wm=doc.createElement('div'); wm.className='cg-wm'; wm.setAttribute('aria-hidden','true'); doc.body.appendChild(wm); } root.classList.add('cg-shot'); clearTimeout(wmTimer); wmTimer=setTimeout(function(){root.classList.remove('cg-shot')},WM_MS); }

/* ---------- Print ---------- */ function printOn(){root.classList.add('cg-print')} function printOff(){root.classList.remove('cg-print')} window.addEventListener('beforeprint',printOn); window.addEventListener('afterprint',printOff); if(window.matchMedia){ var mq=window.matchMedia('print'); var onMq=function(e){e.matches?printOn():printOff()}; if(mq.addEventListener)mq.addEventListener('change',onMq); else if(mq.addListener)mq.addListener(onMq); }

/* ---------- Mouse / seleksi ---------- */ doc.addEventListener('contextmenu',function(e){ if(!inEditable(e.target))block(e); });

doc.addEventListener('dragstart',block);

doc.addEventListener('selectstart',function(e){ var t=e.target&&e.target.nodeType===1?e.target:(e.target&&e.target.parentElement); if(inEditable(t)||(t&&t.closest&&t.closest(COPYABLE)))return; block(e); });

/* ---------- Keyboard ---------- */ doc.addEventListener('keydown',function(e){ var k=e.code,mod=e.ctrlKey||e.metaKey,stop=false;

/* Screenshot: PrintScreen, Cmd+Shift+3/4/5/6 (Mac), Win+Shift+S */ if(k==='PrintScreen'||e.key==='PrintScreen'|| (e.metaKey&&e.shiftKey&&(k==='Digit3'||k==='Digit4'||k==='Digit5'||k==='Digit6'||k==='KeyS'))){ showWatermark(); }

if(k==='F12'){ stop=true; }else if(mod&&!e.altKey&&(k==='KeyP'||(!e.shiftKey&&(k==='KeyS'||k==='KeyU')))){ stop=true; /* Ctrl/Cmd + P (print), S, U */ }else if( (mod&&e.shiftKey&&(k==='KeyI'||k==='KeyJ'||k==='KeyC'))|| /* Ctrl/Cmd + Shift + I, J, C */ (e.metaKey&&e.altKey&&(k==='KeyI'||k==='KeyJ'||k==='KeyC'||k==='KeyU')) /* Cmd + Option + I, J, C, U (Mac) */ ){ stop=true; } if(stop){block(e);e.stopPropagation()} },true);

/* Di Windows, PrintScreen sering hanya mengirim keyup */ doc.addEventListener('keyup',function(e){ if(e.code==='PrintScreen'||e.key==='PrintScreen')showWatermark(); },true);

/* Desktop saja: bila panel dev tools terbuka (docked), bersihkan console saat jendela di-resize */ if(window.matchMedia&&window.matchMedia('(hover:hover) and (pointer:fine)').matches){ var raf=0; window.addEventListener('resize',function(){ if(raf)return; raf=requestAnimationFrame(function(){ raf=0; if((window.outerWidth-window.innerWidth>200||window.outerHeight-window.innerHeight>260)&&window.console&&console.clear){console.clear()} }); },{passive:true}); } }());
