1. ปิดการบันทึก Autosave
WordPress มีฟีเจอร์ Autosave ที่บันทึกโพสต์อัตโนมัติทุก 60 วินาที ซึ่งอาจสร้างข้อมูลในฐานข้อมูลเยอะเกินไป คุณสามารถปรับระยะเวลาหรือปิดได้:
- เพิ่มโค้ดนี้ใน wp-config.php:php
define('AUTOSAVE_INTERVAL', 300); // ปรับเป็น 300 วินาที (5 นาที)
หรือถ้าจะปิดเลย:
phpdefine('WP_POST_REVISIONS', false); // ปิดทั้ง revisions และ autosave
define('AUTOSAVE_INTERVAL', 0); // ปิด autosave
2. จำกัดจำนวน Trash
WordPress เก็บโพสต์ที่ถูกลบไว้ใน “Trash” เป็นเวลา 30 วันก่อนลบถาวร คุณสามารถลดระยะเวลานี้หรือปิดได้:
- เพิ่มใน wp-config.php:php
define('EMPTY_TRASH_DAYS', 7); // ลบถาวรหลัง 7 วัน
หรือปิด Trash เลย (ลบแล้วหายทันที):
phpdefine('EMPTY_TRASH_DAYS', 0);
3. ปิด Heartbeat API
Heartbeat API ทำงานในพื้นหลังเพื่ออัปเดตข้อมูลเรียลไทม์ (เช่น ใน editor หรือ dashboard) แต่ถ้าคุณไม่ต้องการฟีเจอร์นี้ มันกินทรัพยากรโดยไม่จำเป็น:
- เพิ่มใน wp-config.php:php
define('WP_HEARTBEAT_DISABLED', true); // ปิด Heartbeat API
หรือถ้าจะลดการทำงานแทน:
- ปรับใน functions.php:php
add_action('init', function() {
wp_deregister_script('heartbeat');
});
- ปรับใน functions.php:
4. จำกัดการโหลด Comments
ถ้าเว็บคุณไม่ใช้ระบบคอมเมนต์ หรือมีคอมเมนต์เยอะเกินไปในฐานข้อมูล สามารถปิดหรือจำกัดได้:
- ปิดคอมเมนต์ทั้งหมด:
- เพิ่มใน wp-config.php:php
define('DISALLOW_COMMENTS', true);
- เพิ่มใน wp-config.php:
- หรือไปที่ Settings > Discussion ใน dashboard แล้วปิดการอนุญาตคอมเมนต์
5. ปิด Trackbacks และ Pingbacks
ฟีเจอร์นี้ใช้แจ้งเตือนเมื่อมีลิงก์จากเว็บอื่น แต่ถ้าไม่จำเป็น มันเพิ่มข้อมูลในฐานข้อมูล:
- เพิ่มใน wp-config.php:php
define('WP_HTTP_BLOCK_EXTERNAL', true); // บล็อกการเชื่อมต่อภายนอกทั้งหมด
define('WP_ACCESSIBLE_HOSTS', ''); // ไม่ยกเว้น host ใดๆ - หรือปิดใน Settings > Discussion โดยยกเลิก “Allow link notifications from other blogs”
6. ลดการใช้งาน Cron Jobs
WordPress มีระบบ WP-Cron ที่ทำงานอัตโนมัติ (เช่น ตรวจสอบอัปเดต, ลบขยะ) แต่ถ้ามันรันบ่อยเกินไปจะทำให้ช้า:
- ปิด WP-Cron และใช้ Server Cron แทน:
- เพิ่มใน wp-config.php:php
define('DISABLE_WP_CRON', true);
- ตั้งค่า cron job ในเซิร์ฟเวอร์ให้รัน wp-cron.php เอง เช่น ทุก 15 นาที:text
*/15 * * * * wget -q -O - http://yourdomain.com/wp-cron.php?doing_wp_cron >/dev/null 2>&1
- เพิ่มใน wp-config.php:
7. จำกัดการเก็บ Debug Logs
ถ้าคุณเปิด debug mode ไว้ ไฟล์ debug.log ในโฟลเดอร์ wp-content อาจโตเร็วเกินไป:
- ปิดการเก็บ log:
- เพิ่มใน wp-config.php:php
define('WP_DEBUG', false);
define('WP_DEBUG_LOG', false);
- เพิ่มใน wp-config.php:
8. ปิด REST API ถ้าไม่ใช้
WordPress โหลด REST API อัตโนมัติ ซึ่งถ้าเว็บคุณไม่ใช้ API (เช่น ไม่มี headless CMS) สามารถปิดได้:
- เพิ่มใน functions.php:php
add_filter('rest_enabled', '__return_false');
add_filter('rest_jsonp_enabled', '__return_false');
9. ลบข้อมูลที่ไม่ใช้ในฐานข้อมูล
นอกจาก revisions แล้ว ยังมีข้อมูลอื่นที่สะสมในฐานข้อมูล เช่น transients หรือ drafts:
- ใช้คำสั่ง SQL ล้าง transients:sql
DELETE FROM wp_options WHERE option_name LIKE '_transient_%' OR option_name LIKE '_site_transient_%';
- ลบ drafts อัตโนมัติ:sql
DELETE FROM wp_posts WHERE post_status = 'auto-draft' AND post_modified < DATE_SUB(NOW(), INTERVAL 7 DAY);
10. ลบไฟล์ที่ไม่จำเป็นใน Core
ถ้าคุณมั่นใจว่าไม่ใช้บางส่วนของ WordPress สามารถลบไฟล์บางอย่างในโฟลเดอร์ wp-includes หรือ wp-admin ได้ (แต่ต้องระวัง):
- ตัวอย่าง:
- ลบ wp-includes/js/tinymce ถ้าไม่ใช้ตัวแก้ไขแบบเก่า (Classic Editor)
- ลบโฟลเดอร์ภาษาที่ไม่ใช้ใน wp-content/languages
คำแนะนำเพิ่มเติม
- สำรองข้อมูล: ก่อนปรับแต่งอะไรใน wp-config.php หรือลบไฟล์ ควร backup ทั้งไฟล์และฐานข้อมูล
- ทดสอบหลังปรับ: ใช้เครื่องมืออย่าง “Query Monitor” เพื่อดูว่าการเปลี่ยนแปลงช่วยลดโหลดจริงหรือไม่
- ระวังการอัปเดต: การลบไฟล์ใน core อาจทำให้การอัปเดต WordPress ในอนาคตล้มเหลว ต้องคอยจัดการด้วยตัวเอง