MySQL di WordPress Terlalu Besar, Ini Solusinya; Studi Kasus Website Berita (Bagian 2)

Sebelum Tulisan Dimulai…
Ini adalah lanjutan dari yang MySQL di WordPress Terlalu Besar, Ini Solusinya; Studi Kasus Website Berita (Bagian 1). Di posting kali ini kita menyeting plugin cache agar efisien dan juga menyeting berkas .htaccess agar bisa me-redirect sehingga jika pengunjung mengakses ke tahun 2013 maka, akan mengunjungi website arsip.

Tulisan Sesudah Sebelum Tulisan Dimulai…
Langkah kita selanjutnya:

  1. Login ke wp-admin, lalu seting plugin cache (dalam hal ini saya memakai plugin ZenCache, plugin cache favorit saya, mudah digunakan dan sangat terasa perubahan load-nya) agar tidak perlu membersihkan cache otomatis (karena halaman arsip kemungkinan tidak akan diupdate).

    Buat agar plugin tidak otomatis menghapus cache

    Buat agar plugin tidak otomatis menghapus cache

  2. Lalu, buat waktu expired arsip menjadi 1 tahun (bisa lebih jika mau)

    Buat waktu expired jadi 1 tahun atau lebih

    Buat waktu expired jadi 1 tahun atau lebih

  3. Kemudian buat menjadi auto rebuild, agar cache tersedia walaupun tidak sedang dikunjungi oleh pengunjung. Hal ini penting agar halaman tidak perlu melakukan query ke database.

    Atur cache menjadi auto rebuild

    Atur cache menjadi auto rebuild

  4. Jika sudah, kali ini menuju ke website utama (ingat bukan ke website arsip ya).
  5. Ubah berkas .htaccess, masukkan kode di bagian paling atas:
    RedirectMatch 301 ^/2013/(.*)$ http://2013.namadomainklien.com/2013/$1
    RedirectMatch 301 ^/wp-content/uploads/2013/(.*)$ http://2013.namadomainklien.com/2013/$1

     

  6. Jika sudah semua, silakan dihapus posting tahun 2013 yang ada pada website utama. Dengan query:
    DELETE FROM `wp_posts` WHERE `post_date` <= "2013-12-31 00:00:00" AND `post_type`="post"

    lalu seperti langkah di bagian pertama, bersihkan tabel `wp_term_relationships` juga `wp_postmeta`

    DELETE tr FROM wp_term_relationships tr
    INNER JOIN wp_term_taxonomy tt ON (tr.term_taxonomy_id = tt.term_taxonomy_id)
    WHERE tt.taxonomy != 'link_category'
    AND tr.object_id NOT IN (SELECT ID FROM wp_posts);
    SELECT * FROM wp_postmeta pm LEFT JOIN wp_posts wp ON wp.ID = pm.post_id WHERE wp.ID IS NULL;
    DELETE pm FROM wp_postmeta pm LEFT JOIN wp_posts wp ON wp.ID = pm.post_id WHERE wp.ID IS NULL;

     

  7. Jika sudah, kembali di optimize table:

    Optimize table di PhpMyAdmin

    Optimize table di PhpMyAdmin

  8. Kembali ke website arsip (2013.namadomainklien.com), ubah tautan beranda (ini opsional, hanya jika kamu mau membuat mereka yang mengklik menu “Home” atau “Beranda” di website arsip jadi beralih ke website utama).
  9. Jika sudah, lanjutkan juga dari awal langkah membuat website arsip untuk tahun 2014.

Tulisan Sesudah Tulisan…
Selesai, dari pengalaman saya, cara ini lumayan me-reduce load CPU dan ram di VPS. Jadi dibanding memaksakan berada pada 1 database yang bisa membuat server stres meningkat, bisa-bisa setiap posting berita membuat lemot bahkan men-shutdown service 😉

Jika mau, bisa juga website utama berbeda VPS dengan website arsip. Silakan dicoba ya, jangan lupa mem-backup (terutama database sebelum mengeksekusi query).