WP Static Runtime — Serve WordPress at the speed of static HTMLWP Static Runtime — Sajikan WordPress secepat HTML statisGet Premium →Dapatkan Premium →
Docs

Documentation

Everything you need to install, configure, and master WP Static Runtime.

🚀 Getting Started

Requirements

  • WordPress 6.4 or higher
  • PHP 8.0 or higher
  • Apache (with mod_rewrite) or Nginx
  • Write permission on wp-content/cache/wp-static-runtime/

Installation

  1. Download the plugin zip from statixpress.site or WordPress.org.
  2. In your WordPress admin, go to Plugins → Add New → Upload Plugin.
  3. Select the downloaded .zip file and click Install Now.
  4. Click Activate Plugin.
  5. Go to WP Static Runtime → Settings and enable the cache.
  6. Visit any page on your site — it will now be cached as a static HTML file on first load.
Tip: After activating, run the built-in crawler (WP Static Runtime → Crawler) to pre-warm all pages so visitors always get instant responses.

Verify It's Working

Open any page and inspect the HTML source. You should see a comment at the bottom:

<!-- WP Static Runtime | Cached: 2025-01-01 10:00:00 -->

You can also check WP Static Runtime → Diagnostic for a full system check.

Persyaratan

  • WordPress 6.4 atau lebih baru
  • PHP 8.0 atau lebih baru
  • Apache (dengan mod_rewrite) atau Nginx
  • Izin tulis pada folder wp-content/cache/wp-static-runtime/

Instalasi

  1. Download file zip plugin dari statixpress.site atau WordPress.org.
  2. Di WordPress admin, buka Plugins → Add New → Upload Plugin.
  3. Pilih file .zip yang sudah didownload, klik Install Now.
  4. Klik Activate Plugin.
  5. Buka WP Static Runtime → Settings dan aktifkan cache.
  6. Kunjungi halaman mana saja di situs Anda — halaman tersebut akan di-cache sebagai file HTML statis saat pertama kali dimuat.
Tips: Setelah aktivasi, jalankan crawler bawaan (WP Static Runtime → Crawler) untuk pre-warm semua halaman agar pengunjung selalu mendapatkan respon instan.

Verifikasi Plugin Aktif

Buka halaman mana saja dan lihat source HTML-nya. Anda akan melihat komentar di bagian bawah:

<!-- WP Static Runtime | Cached: 2025-01-01 10:00:00 -->

Anda juga bisa cek WP Static Runtime → Diagnostic untuk pemeriksaan sistem lengkap.

⚙️ Configuration

All settings are under WP Static Runtime → Settings in your WordPress admin.

SettingDescriptionDefault
Enable Static CacheMaster switch. Turn off to disable all caching without deactivating the plugin.Off
Cache LifetimeHow long a cached file is considered fresh (in hours). After expiry, the next request regenerates the file.24h
HTML MinificationRemoves unnecessary whitespace and comments from cached HTML to reduce file size.On
Gzip CompressionStores a pre-compressed .gz copy alongside each cached file for servers that support gzip passthrough.On
Exclude URLsOne URL per line. Supports exact paths (/cart) and wildcards (/user/*). These pages are never cached.
Exclude CookiesIf a visitor has any of these cookies, they receive the dynamic (non-cached) version.woocommerce_*
Mobile Separate CacheServe a separate cache file for mobile visitors (useful if your theme renders differently on mobile).Off
Note: After changing any setting, click Flush All Cache from the WordPress admin bar to regenerate all pages with the new configuration.

Semua pengaturan ada di WP Static Runtime → Settings di WordPress admin Anda.

PengaturanKeteranganDefault
Enable Static CacheTombol utama. Matikan untuk menonaktifkan semua cache tanpa menonaktifkan plugin.Mati
Cache LifetimeBerapa lama file cache dianggap masih segar (dalam jam). Setelah kadaluarsa, permintaan berikutnya akan meregenerasi file.24 jam
HTML MinificationMenghapus spasi dan komentar yang tidak diperlukan dari HTML yang di-cache untuk mengurangi ukuran file.Aktif
Gzip CompressionMenyimpan salinan .gz yang sudah dikompres di samping setiap file cache untuk server yang mendukung gzip passthrough.Aktif
Exclude URLsSatu URL per baris. Mendukung path eksak (/cart) dan wildcard (/user/*). Halaman-halaman ini tidak pernah di-cache.
Exclude CookiesJika pengunjung memiliki salah satu cookie ini, mereka akan mendapatkan versi dinamis (bukan cache).woocommerce_*
Mobile Separate CacheSajikan file cache terpisah untuk pengunjung mobile (berguna jika tema Anda merender berbeda di mobile).Mati
Catatan: Setelah mengubah pengaturan, klik Flush All Cache dari admin bar WordPress untuk meregenerasi semua halaman dengan konfigurasi baru.

🕷️ Crawler

The built-in crawler discovers all published URLs from the WordPress database and generates static cache files for them. No sitemap.xml required.

Running the Crawler Manually

  1. Go to WP Static Runtime → Crawler.
  2. Click Start Crawl. The crawler will queue all published posts, pages, archives, and taxonomy pages.
  3. Progress is shown in real time. Each URL is visited and cached.
  4. When complete, your entire site is pre-warmed — zero cold-start for visitors.

Auto-Crawler Cron (Premium)

Premium users can enable an hourly scheduled crawl that keeps all pages fresh automatically. Configure the interval under Settings → Crawler → Cron Interval.

Large sites: For sites with 1,000+ pages, the crawler processes URLs in batches. A full crawl may take several minutes. Run it during off-peak hours.

Crawler bawaan menemukan semua URL yang dipublikasikan dari database WordPress dan membuat file cache statis untuk semuanya. Tidak memerlukan sitemap.xml.

Menjalankan Crawler Secara Manual

  1. Buka WP Static Runtime → Crawler.
  2. Klik Start Crawl. Crawler akan mengantrekan semua post, halaman, arsip, dan halaman taksonomi yang dipublikasikan.
  3. Progress ditampilkan secara real time. Setiap URL dikunjungi dan di-cache.
  4. Setelah selesai, seluruh situs Anda sudah pre-warm — tidak ada cold-start untuk pengunjung.

Auto-Crawler Cron (Premium)

Pengguna premium dapat mengaktifkan crawl terjadwal setiap jam yang menjaga semua halaman tetap segar secara otomatis. Konfigurasi intervalnya di Settings → Crawler → Cron Interval.

Situs besar: Untuk situs dengan 1.000+ halaman, crawler memproses URL dalam batch. Crawl penuh mungkin memakan beberapa menit. Jalankan saat jam sepi.

🛒 WooCommerce

WP Static Runtime supports WooCommerce out of the box with Hybrid Mode: product and shop pages are served as static HTML, while cart, checkout, and account pages remain fully dynamic.

Page TypeModeReason
Shop, Category, ProductStaticRead-only, cacheable
Cart, CheckoutDynamicSession-dependent, changes per user
My AccountDynamicLogged-in user content
Order Received (thank you)DynamicPer-order content

Stock Update Cache Clearing

When a product's stock changes (e.g., after a purchase), the plugin automatically clears the cache for that product page and its parent category page.

Tip: If you see stale prices or stock counts, go to WP Static Runtime → Cache and flush by post type product.

WP Static Runtime mendukung WooCommerce secara langsung dengan Hybrid Mode: halaman produk dan toko disajikan sebagai HTML statis, sementara cart, checkout, dan halaman akun tetap dinamis.

Tipe HalamanModeAlasan
Toko, Kategori, ProdukStatisKonten tetap, bisa di-cache
Keranjang, CheckoutDinamisBergantung sesi, berbeda per pengguna
My AccountDinamisKonten untuk pengguna yang login
Terima Kasih (Order)DinamisKonten per pesanan

Cache Clearing Saat Stok Berubah

Ketika stok produk berubah (misalnya setelah pembelian), plugin secara otomatis menghapus cache untuk halaman produk tersebut dan halaman kategori induknya.

Tips: Jika Anda melihat harga atau jumlah stok yang tidak terbarui, buka WP Static Runtime → Cache dan flush berdasarkan tipe post product.

📐 Server Rules

The plugin generates server configuration rules that tell your web server to serve static files directly — bypassing PHP entirely.

Apache (.htaccess)

The plugin auto-writes the necessary rules to your .htaccess file on activation. No manual action needed. If you need to regenerate them, go to Settings → Server Rules → Regenerate.

# WP Static Runtime - Apache Rules
RewriteEngine On
RewriteCond %{REQUEST_METHOD} GET
RewriteCond %{QUERY_STRING} ^$
RewriteCond %{HTTP_COOKIE} !(wordpress_logged_in|woocommerce_cart) [NC]
RewriteCond %{DOCUMENT_ROOT}/wp-content/cache/wp-static-runtime/$1/index.html -f
RewriteRule ^(.*) /wp-content/cache/wp-static-runtime/$1/index.html [L]

Nginx

For Nginx, go to Settings → Server Rules and copy the Nginx snippet. Add it inside your server {} block:

location / {
    set $cache_file "$document_root/wp-content/cache/wp-static-runtime${uri}index.html";
    if ($request_method = GET) {
        if ($query_string = "") {
            if ($http_cookie !~ "wordpress_logged_in|woocommerce_cart") {
                try_files $cache_file $uri $uri/ /index.php?$args;
            }
        }
    }
}
Note: Nginx rules require a server restart after being added. Apache rules take effect immediately via .htaccess.

Plugin ini membuat aturan konfigurasi server yang memberi tahu web server Anda untuk menyajikan file statis secara langsung — melewati PHP sepenuhnya.

Apache (.htaccess)

Plugin secara otomatis menulis aturan yang diperlukan ke file .htaccess Anda saat aktivasi. Tidak diperlukan tindakan manual. Jika Anda perlu meregenerasinya, buka Settings → Server Rules → Regenerate.

# WP Static Runtime - Apache Rules
RewriteEngine On
RewriteCond %{REQUEST_METHOD} GET
RewriteCond %{QUERY_STRING} ^$
RewriteCond %{HTTP_COOKIE} !(wordpress_logged_in|woocommerce_cart) [NC]
RewriteCond %{DOCUMENT_ROOT}/wp-content/cache/wp-static-runtime/$1/index.html -f
RewriteRule ^(.*) /wp-content/cache/wp-static-runtime/$1/index.html [L]

Nginx

Untuk Nginx, buka Settings → Server Rules dan salin snippet Nginx-nya. Tambahkan di dalam blok server {} Anda:

location / {
    set $cache_file "$document_root/wp-content/cache/wp-static-runtime${uri}index.html";
    if ($request_method = GET) {
        if ($query_string = "") {
            if ($http_cookie !~ "wordpress_logged_in|woocommerce_cart") {
                try_files $cache_file $uri $uri/ /index.php?$args;
            }
        }
    }
}
Catatan: Aturan Nginx memerlukan restart server setelah ditambahkan. Aturan Apache langsung berlaku melalui .htaccess.
PREMIUM This feature requires WP Static Runtime Premium. Upgrade →

♻️ Incremental Static Regeneration (ISR)

ISR brings the stale-while-revalidate pattern to WordPress. When a cached page expires, the next visitor is served the stale (old) version instantly while the fresh version is regenerated in the background. Zero downtime. Zero blank screens.

How It Works

  1. A visitor requests a page whose cache has expired.
  2. They receive the stale cached version immediately (fast response).
  3. A background job regenerates the page by fetching it via loopback request.
  4. The next visitor receives the fresh version.

Configuration

OptionDescription
ISR Revalidation IntervalHow often expired pages are regenerated (in minutes). Recommended: 30–60 min.
Max Queue SizeMaximum pages to regenerate per cron run. Default: 20.
Priority Post TypesPost types that are regenerated first (e.g., post, product).

ISR membawa pola stale-while-revalidate ke WordPress. Saat halaman yang di-cache kadaluarsa, pengunjung berikutnya mendapatkan versi lama (stale) secara instan sementara versi baru diregenerasi di latar belakang. Tanpa downtime. Tanpa layar kosong.

Cara Kerja

  1. Pengunjung meminta halaman yang cache-nya sudah kadaluarsa.
  2. Mereka langsung mendapatkan versi cache lama (respon cepat).
  3. Sebuah job background meregenerasi halaman dengan mengambilnya via loopback request.
  4. Pengunjung berikutnya mendapatkan versi terbaru.

Konfigurasi

OpsiKeterangan
ISR Revalidation IntervalSeberapa sering halaman yang kadaluarsa diregenerasi (dalam menit). Rekomendasi: 30–60 menit.
Max Queue SizeMaksimal halaman yang diregenerasi per siklus cron. Default: 20.
Priority Post TypesTipe post yang diregenerasi pertama kali (misalnya post, product).
PREMIUM This feature requires WP Static Runtime Premium. Upgrade →

🌍 CDN Integration

When you update a post, the plugin automatically purges the corresponding URL from your CDN so visitors never see stale content. Supports Cloudflare, BunnyCDN, and Fastly.

Cloudflare

  1. Go to Premium Settings → CDN → Cloudflare.
  2. Enter your Zone ID (found in Cloudflare Dashboard → Overview).
  3. Enter your API Token with Cache Purge permission.
  4. Save. From now on, every post update triggers an automatic Cloudflare purge.

BunnyCDN

  1. Go to Premium Settings → CDN → BunnyCDN.
  2. Enter your Pull Zone ID and API Key from the BunnyCDN dashboard.
  3. Save and test with the Test Purge button.

Fastly

  1. Go to Premium Settings → CDN → Fastly.
  2. Enter your Service ID and API Token.
  3. Save. Purge is triggered via surrogate keys on post update.

Saat Anda memperbarui sebuah post, plugin secara otomatis menghapus (purge) URL yang sesuai dari CDN Anda agar pengunjung tidak pernah melihat konten yang sudah kadaluarsa. Mendukung Cloudflare, BunnyCDN, dan Fastly.

Cloudflare

  1. Buka Premium Settings → CDN → Cloudflare.
  2. Masukkan Zone ID Anda (tersedia di Cloudflare Dashboard → Overview).
  3. Masukkan API Token dengan izin Cache Purge.
  4. Simpan. Mulai sekarang, setiap pembaruan post memicu purge Cloudflare otomatis.

BunnyCDN

  1. Buka Premium Settings → CDN → BunnyCDN.
  2. Masukkan Pull Zone ID dan API Key dari dashboard BunnyCDN.
  3. Simpan dan uji dengan tombol Test Purge.

Fastly

  1. Buka Premium Settings → CDN → Fastly.
  2. Masukkan Service ID dan API Token Anda.
  3. Simpan. Purge dipicu via surrogate keys saat post diperbarui.

🔑 License & Activation

After purchasing a premium plan, you will receive a license key by email.

Activating Your License

  1. In WordPress admin, go to WP Static Runtime → Premium → License.
  2. Paste your license key and click Activate.
  3. The plugin verifies the key with the license server and enables premium features.

Deactivating / Transferring

To move your license to a different site, first deactivate it on the current site (License → Deactivate), then activate it on the new site. Personal plan: 1 active domain. Agency plan: unlimited.

License Not Found?

If you purchased and didn't receive a license key within 10 minutes, check your spam folder or contact us.

Setelah membeli paket premium, Anda akan menerima license key melalui email.

Mengaktifkan Lisensi

  1. Di WordPress admin, buka WP Static Runtime → Premium → License.
  2. Tempel license key Anda dan klik Activate.
  3. Plugin memverifikasi key dengan license server dan mengaktifkan fitur premium.

Menonaktifkan / Memindahkan Lisensi

Untuk memindahkan lisensi ke situs lain, nonaktifkan dulu di situs saat ini (License → Deactivate), lalu aktifkan di situs baru. Paket Personal: 1 domain aktif. Paket Agency: tak terbatas.

License Key Tidak Diterima?

Jika Anda sudah membeli tetapi tidak menerima license key dalam 10 menit, cek folder spam atau hubungi kami.

🔧 Troubleshooting

Cache is not being served

Check that the server rules are active: go to Diagnostic → Server Rules. For Apache, ensure mod_rewrite is enabled and AllowOverride All is set. For Nginx, ensure you have added the snippet to your server block and reloaded Nginx.

Pages show "Page Not Found" after enabling

Your WordPress permalink settings may need to be saved. Go to Settings → Permalinks and click Save Changes without changing anything.

Admin bar or logged-in elements show in cached pages

The plugin automatically excludes logged-in users from seeing cached pages. If you are seeing admin elements in the cache, add the wordpress_logged_in cookie to your exclusion list.

WooCommerce cart is empty or not updating

Cart and checkout pages should never be cached. Verify they appear in the auto-excluded URLs list under Settings → Exclusions.

Cache files are not being created

Check that the wp-content/cache/wp-static-runtime/ directory is writable by the web server. Run WP Static Runtime → Diagnostic to confirm permissions.

Plugin slows down after a post update

On post update, the plugin clears the cache for that page plus related archives. If your site has many related pages, this can cause a brief slowdown. Consider enabling ISR (Premium) to avoid this.

Still stuck? Run the Diagnostic Panel (WP Static Runtime → Diagnostic) for a full system check, then contact support with the diagnostic report.
Cache tidak disajikan

Cek apakah server rules sudah aktif: buka Diagnostic → Server Rules. Untuk Apache, pastikan mod_rewrite aktif dan AllowOverride All sudah diset. Untuk Nginx, pastikan Anda sudah menambahkan snippet ke server block dan reload Nginx.

Halaman menampilkan "Page Not Found" setelah diaktifkan

Pengaturan permalink WordPress mungkin perlu disimpan ulang. Buka Settings → Permalinks dan klik Save Changes tanpa mengubah apa pun.

Admin bar atau elemen login muncul di halaman cache

Plugin secara otomatis mengecualikan pengguna yang login dari melihat halaman cache. Jika Anda melihat elemen admin di cache, tambahkan cookie wordpress_logged_in ke daftar pengecualian.

Keranjang WooCommerce kosong atau tidak terupdate

Halaman cart dan checkout tidak boleh pernah di-cache. Verifikasi bahwa keduanya muncul di daftar URL yang dikecualikan otomatis di Settings → Exclusions.

File cache tidak dibuat

Pastikan folder wp-content/cache/wp-static-runtime/ dapat ditulis oleh web server. Jalankan WP Static Runtime → Diagnostic untuk mengonfirmasi izin.

Plugin melambat setelah pembaruan post

Saat post diperbarui, plugin menghapus cache untuk halaman tersebut beserta arsip terkait. Jika situs Anda memiliki banyak halaman terkait, ini dapat menyebabkan perlambatan singkat. Pertimbangkan mengaktifkan ISR (Premium) untuk menghindari ini.

Masih bingung? Jalankan Diagnostic Panel (WP Static Runtime → Diagnostic) untuk pemeriksaan sistem lengkap, lalu hubungi support dengan laporan diagnostik tersebut.