Pada artikel kali ini saya ingin membagikan pengalaman saya dalam optimasi server dan website. Website ini berisi banyak gambar karena saya membagi pengalaman saya melalui screenshot, sehingga yang membaca lebih memahami dan melihat ilustrasi yang sedang saya jelaskan. Saya kira ini karena WordPress belum install plugin untuk caching gambar, namun setelah saya install plugin malah tambah berat untuk VPS mini ini, ternyata bottleneck justru ada di:
- Nginx
- PHP
Masalah yang saya temui:
- Load lambat saat buka halaman
- Server terasa berat
- Kadang spike CPU saat banyak request gambar
Setelah saya optimasi di level Nginx dan PHP, hasilnya cukup signifikan. Sebenarnya ini tidak hanya untuk kasus WordPress, bisa untuk kasus apapun yang melibatkan gambar
Teori Singkat
Saat user buka halaman:
- Browser request HTML
- Lalu request gambar
- Server harus handle request tersebut
Kalau tidak dioptimasi:
- Request jadi berat
- Response lama
- Server cepat overload
Fokus optimasi yang saya lakukan:
- caching (Nginx)
- handling request (Nginx)
- resource limit (PHP)
1. Optimasi Nginx untuk Gambar
Edit config:
# nano /etc/nginx/nginx.conf
Aktifkan sendfile dan tcp optimization
Tambahkan / pastikan ada:
sendfile on;
tcp_nopush on;
tcp_nodelay on;

Penjelasan
sendfile→ kirim file langsung dari disk (lebih cepat)tcp_nopush→ optimasi pengiriman data besartcp_nodelay→ kurangi delay kecil
2. Aktifkan Gzip Compression
Tambahkan atau uncomment:
gzip on;
gzip_comp_level 5;
gzip_min_length 256;
gzip_types
text/plain
text/css
application/json
application/javascript
text/xml
application/xml
image/svg+xml;

Penjelasan
- Tidak semua gambar dikompres (JPG/PNG sudah compressed)
- Tapi SVG, CSS, JS tetap penting
3. Browser Cache (Wajib)
Edit config site:
nano /etc/nginx/sites-available/(wordpress)
catatan: ganti (wordpress) dengan direktori yang kalian punya
Tambahkan:
location ~* \.(jpg|jpeg|png|gif|webp|svg)$ {
expires 30d;
add_header Cache-Control "public, max-age=2592000";
access_log off;
}

Penjelasan
- File gambar disimpan di browser 30 hari
- Mengurangi request ke server
access_log off→ hemat disk I/O
4. Limit Request untuk Gambar
Masih di config nginx:
limit_req_zone $binary_remote_addr zone=imglimit:10m rate=10r/s;
server {
location ~* \.(jpg|jpeg|png|gif|webp)$ {
limit_req zone=imglimit burst=20;
}
}
Penjelasan
- Mencegah spam request gambar
- Berguna untuk anti abuse / bot
5. Test dan Reload Nginx
nginx -t
Output:

Kemudian reload nginx:
# systemctl reload nginx
6. Optimasi PHP untuk WordPress
Walaupun gambar dilayani oleh Nginx, PHP tetap berperan saat:
- upload gambar
- generate thumbnail
- processing media
Edit php.ini
nano /etc/php/8.3/fpm/php.ini
Ubah:
memory_limit = 128M
upload_max_filesize = 2M
post_max_size = 12M
max_execution_time = 120
Penjelasan
memory_limit→ penting saat generate thumbnailupload_max_filesize→ batasi upload usermax_execution_time→ hindari timeout saat proses gambar
7. Optimasi PHP-FPM Pool
Edit:
nano /etc/php/8.3/fpm/pool.d/www.conf
Ubah:
pm = dynamic
pm.max_children = 10
pm.start_servers = 3
pm.min_spare_servers = 2
pm.max_spare_servers = 5
Penjelasan
- Menyesuaikan dengan RAM 1GB
- Mencegah over usage
Restart PHP
systemctl restart php8.3-fpm
8. Hasilnya Setelah Optimasi
- Load gambar lebih cepat
- Server lebih stabil
- CPU tidak mudah spike
Tips Tambahan
- Jangan log request gambar terlalu detail
- Gunakan cache semaksimal mungkin
- Hindari proses berat di PHP untuk gambar
Kesimpulan
Optimasi gambar bukan hanya soal file, tapi juga server.
Nginx:
- handle request
- caching
- limit traffic
PHP:
- handle upload
- processing
- resource control
Kalau dua ini dioptimasi, performa WordPress bisa naik signifikan tanpa upgrade server.
Akhir kata Rafi
Sering kali orang fokus ke plugin WordPress, padahal bottleneck ada di server. Dengan tuning sederhana di Nginx dan PHP, performa bisa jauh lebih stabil dan cepat.
Bisa dikembangkan lagi:
- tuning worker_process nginx
- setup fastcgi cache
- integrasi CDN


Leave a Reply