Pahami 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 didukung 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 untuk menyempurnakan aplikasi web JavaScript untuk Google Penelusuran.

Cara Googlebot memproses JavaScript

Googlebot memproses aplikasi web JavaScript melalui tiga fase utama:

  1. Crawling
  2. Rendering
  3. Pengindeksan

Googlebot meng-crawl, merender, dan mengindeks halaman web.

Googlebot mengambil URL dari antrean crawl, meng-crawl URL tersebut, lalu meneruskannya ke tahap pemrosesan. Tahap pemrosesan mengekstrak link yang kembali pada antrean crawl dan mengantrekan halaman untuk rendering. Halaman beralih dari antrean render ke perender yang meneruskan HTML yang telah dirender kembali ke pemrosesan yang mengindeks konten dan mengekstrak link untuk memasukkannya ke antrean crawl.

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 di mana HTML dalam respons HTTP memuat semua konten. Beberapa situs JavaScript mungkin menggunakan model app shell di mana 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 robot memberi tahu Googlebot untuk tidak mengindeks halaman tersebut. Halaman mungkin berada dalam antrean ini selama beberapa detik, tetapi bisa juga lebih lama. Begitu resource Googlebot mengizinkan, 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 yang 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

Judul yang unik dan deskriptif serta deskripsi meta yang bermanfaat dapat membantu pengguna mengidentifikasi hasil terbaik untuk tujuan mereka dengan cepat. Lihat panduan kami untuk membaca penjelasan cara membuat judul dan deskripsi yang baik.

Anda dapat menggunakan JavaScript untuk menyiapkan atau mengubah deskripsi meta serta judul.

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 kami.

Menggunakan kode status HTTP yang bermakna

Googlebot menggunakan kode status HTTP untuk mengetahui apakah terjadi masalah saat meng-crawl halaman.

Sebaiknya Anda menggunakan kode status yang bermakna untuk memberi tahu Googlebot jika ada halaman yang tidak boleh di-crawl atau diindeks, seperti kode 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 ini daftar kode status HTTP dan waktu penggunaannya:

Status HTTP Waktu penggunaan
301 / 302 Halaman telah dipindahkan ke URL baru.
401 / 403 Halaman tidak tersedia karena masalah izin.
404 / 410 Halaman tidak tersedia lagi.
5xx Terjadi kesalahan di sisi server.

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 itu.

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 dari bagian konten dari nama file, seperti main.2bb85551.js. Sidik jari bergantung pada konten file, jadi update akan menghasilkan nama file yang berbeda setiap saat. 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 membuat JSON-LD yang diperlukan dan memasukkannya ke dalam halaman itu. Pastikan untuk menguji penerapan Anda untuk menghindari masalah.

Ikuti 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 penerapan pemuatan lambat Anda search-friendly (cocok untuk penelusuran), baca panduan pemuatan lambat kami.