SSI (Server Side Includes) adalah bahasa skrip sisi server (server-side scripting) yang sederhana dan digunakan untuk menyisipkan isi suatu file ke dalam file HTML lain sebelum halaman tersebut dikirimkan ke browser pengguna. Teknologi ini biasanya ditandai dengan penggunaan ekstensi file .shtml, .shtm, atau .stm pada peladen web seperti Apache atau Nginx.
Fungsi utama SSI adalah memungkinkan pengembang web untuk menggunakan kembali elemen statis yang berulang di banyak halaman—seperti menu navigasi, bilah sisi (sidebar), header, dan footer—tanpa harus menyalin kode yang sama berulang kali secara manual. Ketika permintaan masuk, peladen web memproses perintah SSI terlebih dahulu, menggabungkan komponen-komponen yang diminta, lalu menyajikan halaman HTML utuh kepada pengunjung.
Cara Kerja SSI Web
Proses kerja SSI terjadi sepenuhnya di sisi peladen (server) sebelum halaman ditampilkan kepada klien (browser). Berikut adalah alur eksekusinya:
- Pengguna mengetik URL atau mengklik tautan yang mengarah ke file berformat
.shtml. - Peladen web (seperti Apache) membaca file tersebut dan memindai adanya direktif atau instruksi khusus SSI (biasanya diawali dengan format komentar HTML khusus).
- Peladen mengeksekusi instruksi tersebut, misalnya mengambil isi dari file
footer.htmldan menyisipkannya ke dalam dokumen utama. - Peladen mengirimkan dokumen HTML murni yang sudah tergabung ke browser pengunjung. Browser tidak pernah melihat kode SSI asli, yang terlihat hanya hasil akhirnya saja.
Direktif Dasar SSI yang Sering Digunakan
Format penulisan perintah SSI menggunakan sintaks komentar HTML khusus yang dikenali oleh modul peladen web. Berikut adalah tabel direktif utama dalam SSI beserta fungsinya:
| Direktif SSI | Sintaks Contoh | Fungsi Utama |
|---|---|---|
#include |
<!--#include virtual="/header.html" --> |
Menyisipkan konten dari file eksternal (seperti header, footer, atau navigasi) ke dalam dokumen. |
#echo |
<!--#echo var="DATE_LOCAL" --> |
Menampilkan variabel lingkungan peladen, seperti tanggal saat ini, alamat IP, atau nama file. |
#flastmod |
<!--#flastmod file="index.html" --> |
Menampilkan tanggal dan waktu terakhir kali file tertentu dimodifikasi. |
#fsize |
<!--#fsize file="document.pdf" --> |
Menampilkan ukuran file tertentu dalam format yang mudah dibaca (bytes, KB, MB). |
#exec |
<!--#exec cgi="/cgi-bin/script.cgi" --> |
Menjalankan perintah CGI atau skrip eksternal (sering dinonaktifkan karena alasan keamanan). |
Contoh Implementasi SSI pada File HTML
Berikut adalah contoh nyata penerapan SSI untuk menggabungkan file header dan footer ke dalam halaman utama situs web:
<!DOCTYPE html>
<html lang="id">
<head>
<meta charset="UTF-8">
<title>Beranda - Situs Saya< /title>
</head>
<body>
<!-- Menyisipkan file header secara otomatis -->
<!--#include virtual="/includes/header.html" -->
<main>
<h1>Selamat Datang di Website Kami</h1>
<p>Halaman ini menggunakan teknologi Server Side Includes untuk manajemen layout.</p>
<p>Halaman ini terakhir diperbarui pada: <!--#flastmod file="index.shtml" --></p>
</main>
<!-- Menyisipkan file footer secara otomatis -->
<!--#include virtual="/includes/footer.html" -->
</body>
</html>
Kelebihan dan Kekurangan SSI
Meskipun tergolong teknologi lama sebelum era sistem manajemen konten (CMS) modern seperti WordPress mendominasi, SSI masih memiliki tempat tersendiri karena karakteristiknya yang ringan.
Kelebihan SSI:
- Efisiensi Pemeliharaan: Mengubah satu file navigasi akan memperbarui seluruh halaman yang menyertakannya secara otomatis.
- Kinerja Cepat: Jauh lebih cepat dan ringan dibandingkan menjalankan CMS berbasis database untuk situs web statis murni.
- Tanpa Pemrosesan Kompleks: Tidak memerlukan bahasa pemrograman berat seperti PHP, Python, atau Node.js dan database eksternal seperti MySQL.
Kekurangan SSI:
- Fungsionalitas Terbatas: Tidak cocok untuk aplikasi web dinamis yang memerlukan manajemen pengguna, formulir kompleks, atau interaksi basis data yang intensif.
- Konfigurasi Peladen: Memerlukan pengaturan khusus pada peladen web (seperti mengaktifkan modul
mod_includepada Apache) agar file dengan ekstensi.shtmldiproses dengan benar. - Skala Proyek: Kurang efisien jika digunakan untuk situs web skala besar dengan struktur data yang sangat kompleks.