อยากจะ optimize ให้เล็ก และใม่ให้โหลดช้า สามารถตัดอะไรออกได้บ้าง v.2

1. ปิดการบันทึก Autosave

WordPress มีฟีเจอร์ Autosave ที่บันทึกโพสต์อัตโนมัติทุก 60 วินาที ซึ่งอาจสร้างข้อมูลในฐานข้อมูลเยอะเกินไป คุณสามารถปรับระยะเวลาหรือปิดได้:

  • เพิ่มโค้ดนี้ใน wp-config.php:
    php
    define('AUTOSAVE_INTERVAL', 300); // ปรับเป็น 300 วินาที (5 นาที)

    หรือถ้าจะปิดเลย:

    php
    define('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 เลย (ลบแล้วหายทันที):

    php
    define('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');
      });

4. จำกัดการโหลด Comments

ถ้าเว็บคุณไม่ใช้ระบบคอมเมนต์ หรือมีคอมเมนต์เยอะเกินไปในฐานข้อมูล สามารถปิดหรือจำกัดได้:

  • ปิดคอมเมนต์ทั้งหมด:
    • เพิ่มใน wp-config.php:
      php
      define('DISALLOW_COMMENTS', true);
  • หรือไปที่ 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

7. จำกัดการเก็บ Debug Logs

ถ้าคุณเปิด debug mode ไว้ ไฟล์ debug.log ในโฟลเดอร์ wp-content อาจโตเร็วเกินไป:

  • ปิดการเก็บ log:
    • เพิ่มใน wp-config.php:
      php
      define('WP_DEBUG', false);
      define('WP_DEBUG_LOG', false);

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 ในอนาคตล้มเหลว ต้องคอยจัดการด้วยตัวเอง

ใส่ความเห็น