Memahami dasar-dasar SEO JavaScript
JavaScript adalah bagian penting dari platform web dengan berbagai fiturnya yang mengubah web menjadi platform aplikasi yang canggih. Jadikan aplikasi web Anda, yang dikembangkan dengan teknologi JavaScript, dapat ditemukan melalui Google Penelusuran, agar Anda dapat menemukan pengguna baru dan berinteraksi kembali dengan pengguna yang sudah ada saat mereka menelusuri konten yang disediakan oleh aplikasi web Anda. Meskipun Google Penelusuran menjalankan JavaScript dengan versi Chromium yang selalu baru, ada beberapa hal yang dapat Anda optimalkan.
Panduan ini menjelaskan cara Google Penelusuran memproses JavaScript dan praktik terbaik guna meningkatkan aplikasi web JavaScript untuk Google Penelusuran.
Cara Googlebot memproses JavaScript
Googlebot memproses aplikasi web JavaScript melalui tiga fase utama:
- Crawling
- Rendering
- Pengindeksan
Googlebot meng-crawl, merender, dan mengindeks halaman web.
Saat Googlebot mengambil URL dari antrean crawling dengan membuat permintaan HTTP, pertama-tama Googlebot akan memeriksa apakah Anda mengizinkan crawling. Googlebot akan membaca file robots.txt. Jika file tersebut menandai URL Anda sebagai tidak boleh di-crawl, Googlebot tidak akan membuat permintaan HTTP ke URL ini dan akan melewatinya.
Selanjutnya, Googlebot akan mengurai respons untuk URL lain dalam atribut href
link HTML dan menambahkan URL tersebut ke antrean crawl. Jika Anda tidak ingin link ditemukan, gunakan mekanisme nofollow.
Crawling URL dan penguraian respons HTML sangat efektif pada situs klasik atau halaman yang dirender di sisi server saat HTML dalam respons HTTP memuat semua konten. Beberapa situs JavaScript mungkin menggunakan model app shell ketika HTML awal tidak memuat konten sebenarnya, dan Googlebot perlu menjalankan JavaScript agar dapat melihat konten halaman sebenarnya yang dihasilkan JavaScript.
Googlebot mengantrekan semua halaman web untuk dirender, kecuali jika header atau tag meta robots memberi tahu Googlebot untuk tidak mengindeks halaman tersebut. Halaman mungkin berada dalam antrean selama beberapa detik, tetapi bisa juga lebih lama. Begitu resource Googlebot memungkinkan, Chromium headless akan merender halaman tersebut dan menjalankan JavaScript. Googlebot kembali mengurai HTML yang telah dirender untuk menemukan link, dan mengantrekan URL yang ditemukannya untuk di-crawl. Googlebot juga menggunakan HTML yang telah dirender untuk mengindeks halaman.
Perlu diingat bahwa sisi server atau pra-render masih merupakan ide bagus karena menjadikan situs Anda lebih cepat bagi pengguna dan crawler. Selain itu, tidak semua bot dapat menjalankan JavaScript.
Mendeskripsikan halaman dengan cuplikan dan judul unik
Elemen <title>
yang unik dan deskriptif serta deskripsi meta yang berguna dapat membantu
pengguna mengidentifikasi hasil terbaik untuk tujuan mereka dengan cepat. Lihat panduan kami untuk
mempelajari cara membuat deskripsi meta dan
elemen <title>
yang baik.
Anda dapat menggunakan JavaScript untuk menetapkan atau mengubah deskripsi meta serta elemen <title>
.
Menulis kode yang kompatibel
Browser menawarkan banyak API, dan JavaScript adalah bahasa yang berkembang cepat. Googlebot memiliki beberapa keterbatasan terkait fitur API dan JavaScript yang didukungnya. Untuk memastikan kode Anda kompatibel dengan Googlebot, ikuti panduan memecahkan masalah JavaScript.
Menggunakan kode status HTTP yang bermakna
Googlebot menggunakan kode status HTTP untuk mengetahui apakah terjadi masalah saat meng-crawl halaman.
Untuk memberi tahu Googlebot jika halaman tidak dapat di-crawl atau diindeks, gunakan kode status yang bermakna, seperti
404
untuk halaman yang tidak dapat ditemukan, atau kode 401
untuk halaman yang memerlukan login. Anda dapat menggunakan kode status HTTP untuk memberi tahu Googlebot jika sebuah halaman telah dipindahkan ke URL baru, sehingga
indeks dapat diperbarui berdasarkan kondisi tersebut.
Berikut daftar kode status HTTP dan pengaruhnya terhadap Google Penelusuran.
Menghindari error soft 404
di aplikasi web satu halaman
Dalam aplikasi web satu halaman yang dirender di sisi klien, pemilihan rute sering diimplementasikan sebagai pemilihan rute sisi klien.
Dalam hal ini, menggunakan kode status HTTP yang bermakna bisa jadi tidak mungkin untuk dilakukan atau tidak praktis.
Untuk menghindari error soft 404
saat
menggunakan rendering dan pemilihan rute sisi klien, gunakan salah satu strategi berikut:
- Gunakan pengalihan JavaScript ke URL yang akan direspons server dengan kode status HTTP
404
(misalnya/not-found
). - Tambahkan
<meta name="robots" content="noindex">
ke halaman error menggunakan JavaScript.
Berikut adalah kode contoh untuk pendekatan pengalihan:
fetch(`/api/products/${productId}`) .then(response => response.json()) .then(product => { if(product.exists) { showProductDetails(product); // shows the product information on the page } else { // this product does not exist, so this is an error page. window.location.href = '/not-found'; // redirect to 404 page on the server. } })
Berikut adalah kode contoh untuk pendekatan tag noindex
:
fetch(`/api/products/${productId}`) .then(response => response.json()) .then(product => { if(product.exists) { showProductDetails(product); // shows the product information on the page } else { // this product does not exist, so this is an error page. // Note: This example assumes there is no other meta robots tag present in the HTML. const metaRobots = document.createElement('meta'); metaRobots.name = 'robots'; metaRobots.content = 'noindex'; document.head.appendChild(metaRobots); } })
Menggunakan History API, bukan fragmen
Saat mencari link di halaman Anda, Googlebot hanya mempertimbangkan URL di atribut href
pada link HTML.
Untuk aplikasi web satu halaman dengan perutean sisi klien, gunakan History API untuk mengimplementasikan perutean antara tampilan yang berbeda dari aplikasi web Anda. Untuk memastikan bahwa Googlebot dapat menemukan link, hindari menggunakan fragmen untuk memuat konten halaman yang berbeda. Contoh berikut adalah praktik yang buruk, karena Googlebot tidak akan meng-crawl link:
<nav> <ul> <li><a href="#/products">Our products</a></li> <li><a href="#/services">Our services</a></li> </ul> </nav> <h1>Welcome to example.com!</h1> <div id="placeholder"> <p>Learn more about <a href="#/products">our products</a> and <a href="#/services">our services</p> </div> <script> window.addEventListener('hashchange', function goToPage() { // this function loads different content based on the current URL fragment const pageToLoad = window.location.hash.slice(1); // URL fragment document.getElementById('placeholder').innerHTML = load(pageToLoad); }); </script>
Sebaliknya, Anda dapat memastikan URL link dapat diakses oleh Googlebot dengan mengimplementasikan History API:
<nav> <ul> <li><a href="/products">Our products</a></li> <li><a href="/services">Our services</a></li> </ul> </nav> <h1>Welcome to example.com!</h1> <div id="placeholder"> <p>Learn more about <a href="/products">our products</a> and <a href="/services">our services</p> </div> <script> function goToPage(event) { event.preventDefault(); // stop the browser from navigating to the destination URL. const hrefUrl = event.target.getAttribute('href'); const pageToLoad = hrefUrl.slice(1); // remove the leading slash document.getElementById('placeholder').innerHTML = load(pageToLoad); window.history.pushState({}, window.title, hrefUrl) // Update URL as well as browser history. } // Enable client-side routing for all links on the page document.querySelectorAll('a').forEach(link => link.addEventListener('click', goToPage)); </script>
Menggunakan tag meta robots dengan hati-hati
Anda dapat mencegah Googlebot mengindeks halaman atau mengikuti link dengan tag meta robots. Misalnya, tambahkan tag meta berikut ke bagian atas halaman untuk mencegah Googlebot mengindeks halaman tersebut:
<!-- Googlebot won't index this page or follow links on this page --> <meta name="robots" content="noindex, nofollow">
Anda dapat menggunakan JavaScript untuk menambahkan tag meta robots ke sebuah halaman atau mengubah konten halaman itu. Kode contoh berikut menunjukkan cara mengubah tag meta robots dengan JavaScript untuk mencegah pengindeksan halaman saat ini jika panggilan API tidak menampilkan konten.
fetch('/api/products/' + productId) .then(function (response) { return response.json(); }) .then(function (apiResponse) { if (apiResponse.isError) { // get the robots meta tag var metaRobots = document.querySelector('meta[name="robots"]'); // if there was no robots meta tag, add one if (!metaRobots) { metaRobots = document.createElement('meta'); metaRobots.setAttribute('name', 'robots'); document.head.appendChild(metaRobots); } // tell Googlebot to exclude this page from the index metaRobots.setAttribute('content', 'noindex'); // display an error message to the user errorMsg.textContent = 'This product is no longer available'; return; } // display product information // ... });
Jika noindex
ditemukan dalam tag meta robots sebelum menjalankan JavaScript, Googlebot tidak akan merender atau mengindeks halaman tersebut.
Menggunakan cache yang tahan lama
Googlebot melakukan cache secara terus-menerus untuk mengurangi permintaan jaringan dan penggunaan resource. WRS dapat mengabaikan header cache. Hal ini dapat menyebabkan WRS menggunakan
resource JavaScript atau CSS yang sudah tidak berlaku. Penyidikjarian konten menghindari masalah ini dengan membuat sidik jari bagian konten dari nama file, seperti main.2bb85551.js
.
Sidik jari bergantung pada konten file, sehingga pembaruan akan menghasilkan nama file yang berbeda
setiap kalinya. Lihat panduan web.dev tentang strategi cache yang tahan lama untuk mempelajari lebih lanjut.
Menggunakan data terstruktur
Saat menggunakan data terstruktur di halaman, Anda dapat menggunakan JavaScript untuk menghasilkan JSON-LD yang diperlukan dan memasukkannya ke dalam halaman tersebut. Pastikan untuk menguji implementasi Anda guna menghindari masalah.
Mengikuti praktik terbaik untuk komponen web
Googlebot mendukung komponen web. Konten shadow DOM dan light DOM akan di-flatten oleh Googlebot saat merender halaman. Artinya, Googlebot hanya dapat melihat konten yang terlihat di HTML yang telah dirender. Untuk memastikan Googlebot tetap dapat melihat konten Anda setelah dirender, gunakan Pengujian Situs Mobile-Friendly atau Alat Inspeksi URL dan lihat HTML yang dirender tersebut.
Jika konten tidak terlihat di HTML yang telah dirender, Googlebot tidak akan dapat mengindeksnya.
Contoh berikut membuat komponen web yang menampilkan konten light DOM-nya di dalam shadow DOM-nya. Salah satu cara untuk memastikan konten light DOM dan shadow DOM ditampilkan dalam HTML yang telah dirender adalah menggunakan elemen Slot.
<script> class MyComponent extends HTMLElement { constructor() { super(); this.attachShadow({ mode: 'open' }); } connectedCallback() { let p = document.createElement('p'); p.innerHTML = 'Hello World, this is shadow DOM content. Here comes the light DOM: <slot></slot>'; this.shadowRoot.appendChild(p); } } window.customElements.define('my-component', MyComponent); </script> <my-component> <p>This is light DOM content. It's projected into the shadow DOM.</p> <p>WRS renders this content as well as the shadow DOM content.</p> </my-component>
Setelah proses rendering, Googlebot akan mengindeks konten ini:
<my-component> Hello World, this is shadow DOM content. Here comes the light DOM: <p>This is light DOM content. It's projected into the shadow DOM<p> <p>WRS renders this content as well as the shadow DOM content.</p> </my-component>
Memperbaiki gambar dan konten yang lambat dimuat
Gambar dapat menguras bandwidth dan menurunkan performa. Salah satu strategi yang dianjurkan adalah menggunakan pemuatan lambat untuk memuat gambar hanya saat pengguna akan melihatnya. Untuk memastikan implementasi pemuatan lambat Anda cocok untuk penelusuran, baca panduan pemuatan lambat kami.
Mendesain untuk aksesibilitas
Buatlah halaman untuk pengguna, bukan hanya mesin telusur. Saat Anda mendesain situs, pertimbangkan tentang kebutuhan pengguna, termasuk mereka yang mungkin tidak menggunakan browser yang dilengkapi JavaScript (misalnya mereka yang menggunakan pembaca layar atau perangkat seluler yang kurang canggih). Salah satu cara paling mudah untuk menguji aksesibilitas situs Anda adalah dengan melihat pratinjaunya di browser tanpa mengaktifkan JavaScript, atau dengan menampilkannya di browser khusus teks seperti Lynx. Menampilkan situs hanya sebagai teks juga dapat membantu Anda mengidentifikasi konten lain yang mungkin sulit dilihat Googlebot, seperti teks yang disematkan dalam gambar.