มีวิธีต่างๆ ในการทำให้ไซต์ของคุณมีประสิทธิภาพมากขึ้น: ปลั๊กอินพิเศษช่วยให้คุณสามารถแคชหน้าสำหรับเนื้อหา HTML แบบคงที่ ส่วนอื่นๆ ช่วยให้คุณสามารถแคชข้อความค้นหา SQL ทั้งหมดและ donnéesและในที่สุด บางส่วนก็อนุญาตให้คุณลดขนาดไฟล์ JavaScript และ CSS และแม้กระทั่งโซลูชันฝั่งเซิร์ฟเวอร์

mise-en-ซ่อนบน WordPress

แต่ถึงแม้ว่าคุณจะใช้ปลั๊กอินเหล่านี้ แคช ภายในสำหรับวัตถุฐานข้อมูลและผลลัพธ์ données จะเป็นแนวทางการพัฒนาที่ดี เนื่องจากปลั๊กอินของคุณไม่ได้ขึ้นอยู่กับโซลูชันการแคชใด ๆ ที่ผู้ใช้ปลายทางมี ปลั๊กอินของคุณควรทำงานได้รวดเร็ว และไม่ควรพึ่งพาปลั๊กอินอื่นเพื่อทำงานสกปรก และถ้าคุณคิดว่าคุณควรเขียนโค้ดการจัดการแคชของคุณเอง คุณคิดผิด WordPress มาพร้อมกับทุกสิ่งที่คุณต้องการเพื่อนำไปใช้อย่างรวดเร็ว แคช de données. คุณเพียงแค่ต้องระบุส่วนของโค้ดที่จะได้ประโยชน์จากการเพิ่มประสิทธิภาพ และเลือกประเภท แคช ตาม

WordPress ใช้วิธีการแคชสองวิธี:

ไม่ถาวร

ข้อมูลยังคงอยู่ในแคชในขณะที่หน้าโหลด (WordPress ใช้เพื่อแคชผลลัพธ์แบบสอบถามส่วนใหญ่จากฐานข้อมูล.)

หมั่น

ขึ้นอยู่กับการทำงานของฐานข้อมูลและข้อมูลที่แคชอาจหมดอายุด้วยตนเองหลังจากระยะเวลาหนึ่ง (WordPress ใช้เพื่อแคชฟีด RSS อัปเดต ฯลฯ )

ในบทช่วยสอนนี้เราจะพิจารณาเฉพาะแคชที่ไม่ใช่แบบถาวร

วิธีตั้งค่าแคชแบบไม่ถาวรแบบ "ไม่ถาวร"

เมื่อคุณใช้ฟังก์ชั่นเช่น " get_posts () "หรือ" get_post_meta () WordPress ตรวจสอบก่อนเพื่อดูว่าข้อมูลที่คุณต้องการถูกแคชไว้หรือไม่ ถ้าเป็นเช่นนั้นคุณจะได้รับข้อมูลจากแคช มิฉะนั้นแบบสอบถามฐานข้อมูลจะถูกเรียกใช้เพื่อรับข้อมูลนี้ เมื่อข้อมูลถูกกู้คืนข้อมูลจะถูกแคชด้วย แนะนำให้ใช้แคชแบบไม่ถาวรสำหรับผลลัพธ์ฐานข้อมูลที่สามารถใช้ซ้ำได้เมื่อสร้างเพจ

รหัสแคชภายในถาวรของ WordPress ตั้งอยู่ในไฟล์ " cache.php "ในไดเร็กทอรี" wp-includes "และจัดการโดย" WP_Object_Cache ". เราจำเป็นต้องใช้ฟังก์ชันพื้นฐานสองอย่าง: " wp_cache_set () "และ" wp_cache_get () ในเวลาเดียวกันกับฟังก์ชั่นเพิ่มเติม " wp_cache_add () '" wp_cache_replace () '" wp_cache_flush () "และ" wp_cache_delete () " ที่เก็บข้อมูลแคชถูกจัดระเบียบเป็นกลุ่มแต่ละรายการที่ต้องการคีย์ที่ไม่ซ้ำกัน เพื่อหลีกเลี่ยงการผสมข้อมูล WordPress เริ่มต้นให้ใช้ชื่อที่ไม่ซ้ำกันเป็นแนวทางปฏิบัติที่ดีที่สุด

กันตัวอย่าง

สำหรับตัวอย่างนี้เราจะสร้างฟังก์ชันชื่อ“ d4p_get_all_post_meta ()” ซึ่งดึงข้อมูลเมตาทั้งหมดที่เกี่ยวข้องกับบทความ เวอร์ชันแรกนี้ไม่รวมการแคช

function d4p_get_all_post_meta($post_id) {
    global $wpdb;

    $data = array();
    $raw = $wpdb->get_results( "SELECT meta_key, meta_value FROM $wpdb->postmeta WHERE post_id = $post_id", ARRAY_A );

    foreach ( $raw as $row ) {
        $data[$row['meta_key']][] = $row['meta_value'];
    }

    return $data;
}

ทุกครั้งที่คุณเรียกใช้ฟังก์ชันนี้สำหรับบทความเดียวกันแบบสอบถาม SQL จะถูกดำเนินการ นี่คือฟังก์ชั่นที่ได้รับการแก้ไขซึ่งใช้แคช WordPress แบบไม่ถาวร

function d4p_get_all_post_meta($post_id) {
    global $wpdb;

    if ( ! $data = wp_cache_get( $post_id, 'd4p_post_meta' ) ) {
        $data = array();
        $raw = $wpdb->get_results( "SELECT meta_key, meta_value FROM $wpdb->postmeta WHERE post_id = $post_id", ARRAY_A );

        foreach ( $raw as $row ) {
            $data[$row['meta_key']][] = $row['meta_value'];
        }

        wp_cache_add( $post_id, $data, 'd4p_post_meta' );
    }

    return $data;
}

ที่นี่เราใช้กลุ่มแคชชื่อ " d4p_post_meta ", และ" post_id "ซึ่งเป็นกุญแจสำคัญ ด้วยฟังก์ชั่นนี้เราจะตรวจสอบว่าเราต้องการข้อมูลทั้งหมดในหน่วยความจำหรือไม่ มิฉะนั้นเราจะเรียกใช้รหัสปกติเพื่อรับข้อมูลจากนั้นเพิ่มลงในแคชในแถวที่ 13 ดังนั้นหากคุณเรียกใช้ฟังก์ชันนี้มากกว่าหนึ่งครั้งเฉพาะอันแรกเท่านั้นที่จะดำเนินการสืบค้น SQL การโทรอื่น ๆ ทั้งหมดจะดึงข้อมูลจากแคช ที่นี่เราใช้ฟังก์ชัน " wp_cache_add "ดังนั้นหากมีชุดค่าผสม" คีย์ - กลุ่ม "อยู่แล้วจะไม่มีการแทนที่ เปรียบเทียบกับ " wp_cache_set ซึ่งจะแทนที่ค่าที่มีอยู่เสมอโดยไม่ตรวจสอบ

อย่างที่คุณเห็นเราเพิ่งทำการเปลี่ยนแปลงเล็กน้อยกับโค้ดที่มีอยู่ แต่อาจช่วยประหยัดการเรียกฐานข้อมูลจำนวนมากซึ่งอาจทำให้การโหลดเร็วขึ้น

ข้อควรทราบ

แคชไม่ต่อเนื่องใช้ได้เฉพาะขณะโหลดหน้าปัจจุบันเท่านั้น เมื่อโหลดหน้าถัดไปจะว่างเปล่าอีกครั้ง

ขนาดพื้นที่จัดเก็บถูก จำกัด โดยหน่วยความจำทั้งหมดที่มีอยู่บน PHP ที่เซิร์ฟเวอร์จัดสรร อย่าจัดเก็บข้อมูลจำนวนมากมิฉะนั้นคุณอาจได้รับข้อความ "หน่วยความจำไม่เพียงพอ"

การใช้แคชประเภทนี้เหมาะสมสำหรับการดำเนินการซ้ำมากกว่าหนึ่งครั้งในระหว่างการสร้างเพจ

ทำงานร่วมกับ WordPress จากรุ่น 2.0

นั่นคือทั้งหมดสำหรับบทช่วยสอนนี้ ฉันหวังว่ามันจะช่วยให้คุณแคชได้ดีขึ้น บล็อกของคุณ.