Transients API คืออะไร?

เผยแพร่แล้ว: 2020-12-16

ประสิทธิภาพของเว็บไซต์มักวนเวียนอยู่กับแนวคิดของการแคช: การจัดเก็บข้อมูลในสถานะที่พร้อมใช้งานและเข้าถึงได้เร็วขึ้นเพื่อให้เบราว์เซอร์ทำซ้ำได้เร็วขึ้น WordPress Transients API เป็นเครื่องมือสำหรับการแคชและเป็นวิธีที่มีประสิทธิภาพในการปรับปรุงประสิทธิภาพสำหรับเว็บไซต์ WordPress

แคชคืออะไรและทำไมถึงใช้?

เมื่อใดก็ตามที่เบราว์เซอร์ร้องขอหน้าเว็บเซิร์ฟเวอร์ที่ให้บริการจะต้องทำการคำนวณที่ซับซ้อนและใช้เวลานานซึ่งทำให้เกิดความล่าช้า หลังจากดำเนินการค้นหาด้วยเทคโนโลยีการแคชเซิร์ฟเวอร์สามารถจดจำผลลัพธ์สุดท้ายและเมื่อมีการร้องขอครั้งที่สองให้ส่งไปยังเบราว์เซอร์โดยไม่ต้องทำการคำนวณแบบเดิมอีก ดังนั้นความสามารถในการแคชและนำทรัพยากรก่อนหน้านี้กลับมาใช้ใหม่จึงมีความสำคัญต่อการเพิ่มประสิทธิภาพ

การแคชเป็นเพียงตัวเลือกในการจัดเก็บข้อมูลชั่วคราวในชั้นการแคช

ประเภทของการแคชคืออะไร?

การแคชมีหลายประเภทและด้วยการใช้แคชร่วมกันคุณจะได้รับประสิทธิภาพในระดับที่สูงขึ้น

ประเภทของการแคช

การแคชเบราว์เซอร์

ก่อนที่จะเปิดเนื้อหาของหน้าเว็บเบราว์เซอร์ของคุณจำเป็นต้องมีสิ่งต่างๆมากมายเช่นไฟล์ JavaScript สไตล์ชีทแบบอักษรและอื่น ๆ ซึ่งทั้งหมดนี้จะดาวน์โหลดนอกเหนือจากเนื้อหาของหน้า

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

การแคชเซิร์ฟเวอร์

การแคชเซิร์ฟเวอร์หมายถึงการบันทึกไฟล์ HTML สำหรับเพจใดเพจหนึ่งและใช้ if สำหรับแต่ละคำขอที่ตามมา นี่คือสิ่งที่เรียกว่าแคชแบบเต็มหน้า

มีแคชเซิร์ฟเวอร์อีกประเภทหนึ่งคือแคชอ็อบเจ็กต์ซึ่งไม่เหมือนกับแคชแบบเต็มหน้าแคชเฉพาะข้อมูลบางบิต (ชิ้น)

การแคชหน้า

ถือเป็นแคชที่มีประสิทธิภาพสูงสุด ชื่อของมันเป็นตัวอธิบายวิธีการทำงาน เมื่อผู้ใช้ "A" เข้าชมหน้าเว็บไซต์จะสร้างและส่งคืนเนื้อหาไปยังเบราว์เซอร์ของผู้ใช้ เมื่อแคชเพจทำงานเนื้อหาของเพจนี้จะถูกบันทึกเพื่อที่ว่าเมื่อผู้ใช้ "B" เข้าชมเพจเดียวกันแคชของเพจจะสร้างเนื้อหาที่ส่งไปก่อนหน้านี้

ข้อได้เปรียบที่ยิ่งใหญ่ที่สุดของ Page Cache คือหน้าที่แคชจะส่งคืนเกือบในขณะที่เข้าถึง ด้วยเหตุนี้จึงมีการประมวลผลคำขอหลายล้านรายการและมีการสร้างหน้าซ้ำแม้ในเซิร์ฟเวอร์ที่อ่อนแอที่สุดด้วยความเร็วหน่วยความจำที่ต่ำที่สุดและการใช้งาน CPU เพียงเล็กน้อย

แต่แคชประเภทนี้ก็มีข้อเสียเช่นกันตัวอย่างเช่นไม่สามารถแคชเพจสำหรับผู้ใช้ที่ได้รับอนุญาตหรือสำหรับผู้ใช้ที่มีเนื้อหาของเพจขึ้นอยู่กับตัวแปรของผู้ใช้ปัจจุบัน

การแคชฐานข้อมูล

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

เมื่อแอปพลิเคชันเหล่านี้ถูกปรับใช้บนสภาพแวดล้อมแบบหลายชั้นที่เกี่ยวข้องกับไคลเอนต์ที่ใช้เบราว์เซอร์เซิร์ฟเวอร์เว็บแอปพลิเคชันและฐานข้อมูลแบ็กเอนด์จะใช้การแคชฐานข้อมูลระดับกลางเพื่อให้เกิดความสามารถในการปรับขนาดและประสิทธิภาพสูง

การแคชวัตถุ

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

เมื่อเปิดใช้งานบนไซต์ WordPress ของคุณจะช่วยเพิ่มความเร็วในการดำเนินการ PHP ส่งเนื้อหาไปยังผู้เยี่ยมชมไซต์ได้เร็วขึ้นและลดภาระในฐานข้อมูล

CDN (เครือข่ายการจัดส่งเนื้อหา)

เป็นโครงสร้างพื้นฐานเครือข่ายแบบกระจายทางภูมิศาสตร์ที่ให้การจัดส่งเนื้อหาไปยังผู้ใช้บริการเว็บและไซต์ได้อย่างรวดเร็ว เซิร์ฟเวอร์ที่รวมอยู่ใน CDN ตั้งอยู่ทางภูมิศาสตร์เพื่อให้เวลาตอบสนองสำหรับผู้ใช้ไซต์ / บริการน้อยที่สุด

Transients API ใน WordPress คืออะไร?

Transients API เป็นวิธีการจัดเก็บบล็อกข้อมูล (สตริงโค้ดเนื้อหา HTML WP_Query Objects JSON) ในฐานข้อมูลของเว็บไซต์ซึ่งตรงข้ามกับการแคชเบราว์เซอร์ Transients API คล้ายกับ Options API มาก แต่ข้อแตกต่างที่สำคัญคือ Transients API มีเวลาหมดอายุ หรืออายุการใช้งานที่ดีกว่า

การดำเนินการหลักสามประการสำหรับช่วงเวลาคือ การตั้งค่าการรับค่าและการลบค่า :

1. ตั้งค่าชั่วคราว -

 set_transient (คีย์ $, ค่า $, $ หมดอายุ);

ในการตั้งค่าชั่วคราวคุณสามารถใช้ฟังก์ชัน set_transient () ซึ่งมีส่วนประกอบสามส่วน:

  • คีย์ - ชื่อเฉพาะสั้น ๆ ของชั่วคราว ต้องมีความยาว 172 อักขระหรือน้อยกว่า
  • ค่า - ตัวแปร PHP ประเภทใดก็ได้ที่มีข้อมูลซึ่งจะถูกเก็บไว้ในฐานข้อมูล
  • Expiration Time (อายุการใช้งาน) - ระยะเวลาที่ข้อมูลจะถูกจัดเก็บ

ตัวอย่างเช่นหากเราต้องการบันทึกข้อความค้นหาโพสต์ในรายการของเราเป็นเวลาหนึ่งวัน:

 set_transient ('unique_listing_posts_query_results_name',$ listing_posts_query_results DAY_IN_SECONDS);

อย่างที่คุณเห็นเราได้ใช้ค่าคงที่เวลาหนึ่ง (DAY_IN_SECONDS) ที่แนะนำใน WordPress 3.5 เพื่อแสดงเวลาได้อย่างง่ายดาย นี่คือรายการค่าคงที่ตลอดเวลาทั้งหมด:

 MINUTE_IN_SECONDS = 60 (วินาที)
HOUR_IN_SECONDS = 60 * MINUTE_IN_SECONDS
DAY_IN_SECONDS = 24 * HOUR_IN_SECONDS
WEEK_IN_SECONDS = 7 * DAY_IN_SECONDS
MONTH_IN_SECONDS = 30 * DAY_IN_SECONDS
YEAR_IN_SECONDS = 365 * DAY_IN_SECONDS

2. รับชั่วคราว -

 get_transient (คีย์ $);

เพื่อให้ได้รับการบันทึกชั่วคราวเราสามารถใช้

 get_transient ($ transient_name);

ในกรณีของเราเราสามารถดึงผลการค้นหารายการโพสต์ของเราด้วย:

 get_transient ( 'unique_listing_posts_query_results_name' );

เราจะเห็นเพิ่มเติมในภายหลังในส่วนตัวอย่างของเรา

3. ลบชั่วคราว -

 delete_transient (คีย์ $);

ดังที่เราได้อธิบายไว้ในส่วนย่อยก่อนหน้านี้เราสามารถใช้ Transients API เพื่อรับและจัดเก็บการตอบสนองจากฐานข้อมูลระยะไกลหรือในพื้นที่ (เนื้อหาหรือแบบสอบถามจากฐานข้อมูลของเรา)

อย่างไรก็ตามต่อไปนี้เป็นคำถามเกี่ยวกับ วิธีที่เราลบเนื้อหาเก่าที่เก็บไว้ (ชั่วคราว) มีสองวิธีในการล้าง (ลบ) ชั่วคราว:

การลบอัตโนมัติ

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

การลบด้วยตนเอง

บางครั้งเราจำเป็นต้องบังคับให้ชั่วคราวตายก่อนโดยการลบด้วยตนเอง สิ่งนี้มีประโยชน์เมื่อกิจกรรมที่กำหนด (เพิ่มรายการเมนูใหม่บันทึกหรืออัปเดตโพสต์เพิ่มหรืออัปเดตหมวดหมู่ ฯลฯ ) จะทำให้ข้อมูลแคชค้างและจำเป็นต้องอัปเดต:

ฟังก์ชันที่เราต้องใช้คือ

 delete_transient ($ transient_name)

และในกรณีของเราควรเป็น:

 delete_transient ( 'unique_listing_posts_query_results_name' );

หมายเหตุ: สิ่งสำคัญคืออย่าใช้ช่วงเวลาในการจัดเก็บข้อมูลที่มีค่าซึ่งไม่สามารถสร้างขึ้นใหม่ได้!

เหตุใดเราจึงควรใช้ API ชั่วคราว

เราสามารถใช้ Transients API เมื่อใดก็ตามที่เรามีค่าที่เน้นการคำนวณซึ่งไม่เปลี่ยนแปลงบ่อยนักและคุณต้องการแคช ใน WordPress โดยปกติแล้วสิ่งนี้จะเป็นวัตถุที่ได้จากการสืบค้นฐานข้อมูล แต่จริงๆแล้วอาจเป็นอะไรก็ได้ที่คุณเก็บไว้ในตัวแปรไม่ว่าจะเป็นค่าสเกลาร์อาร์เรย์หรือวัตถุ

ดังนั้นในทุกช่วงเวลาจึงยอดเยี่ยมเมื่อคุณทำแบบสอบถามที่ซับซ้อนในธีมและปลั๊กอินของคุณ

ประโยชน์ของการแคชการตอบกลับระยะไกลหรือในพื้นที่

การตอบสนอง API ระยะไกล

API ระยะไกลมักจะโทรหรือร้องขอไปยังเซิร์ฟเวอร์ระยะไกลหลายครั้งและมีเวลาแฝงเพิ่มเติม ซึ่งต้องใช้เวลาและทำให้เกิดความล่าช้า นอกจากนี้ API ระยะไกลบางตัวอาจมีการ จำกัด อัตราซึ่งหมายความว่าคุณสามารถเข้าถึงขีด จำกัด คำขอสูงสุดภายในช่วงเวลาที่กำหนด

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

 get_transient ();

วิธีการและแสดงผลลัพธ์ / เนื้อหาที่เก็บไว้ (แคช) ทุกที่ที่ต้องการโดยไม่ต้องโทรหรือร้องขอจากระยะไกลอื่น ๆ

ทั้งหมดนี้จะ:

  • ลดการโทรและคำขอ HTTPS ระยะไกล
  • ลดการใช้งานเซิร์ฟเวอร์ CPU
  • ปรับปรุงเวลาในการโหลดหน้าเว็บไซต์

การตอบสนอง API ภายใน

- โดยพื้นฐานแล้ว HTML หรือผลการสืบค้นจากฐานข้อมูล คุณสามารถใช้ Transients API ไม่เพียง แต่สำหรับการแคชการตอบกลับระยะไกลเท่านั้น แต่ยังใช้ในการจัดเก็บเนื้อหา HTML หรือผลลัพธ์ของคิวรีในฐานข้อมูลภายใน จะมีประโยชน์มากหากคุณต้องการแสดงส่วน HTML ที่ทำซ้ำได้บนเว็บไซต์ของคุณ (วิดเจ็ตแถบเลื่อนเมนู ฯลฯ ) หรือเพียงเพื่อป้องกันไม่ให้มีการเรียกใช้การสืบค้นฐานข้อมูลที่ซับซ้อนหรือช้าทุกครั้งเมื่อมีผู้เยี่ยมชมเว็บไซต์ของคุณ

ควรใช้ Transients ที่ไหนและเมื่อใด

  • แบบสอบถามฐานข้อมูลที่ซับซ้อนและกำหนดเอง
  • เมนูนำทาง WordPress
  • วิดเจ็ตแถบด้านข้างที่แสดงข้อมูลเช่น; ทวีตรายชื่อผู้เยี่ยมชมไซต์ล่าสุดหรือรายการโพสต์จากหมวดหมู่หนึ่ง
  • การแคชแท็กคลาวด์
  • การแคชคำขอ HTTP ภายนอก

การใช้งานและตัวอย่าง

หลังจากมีคำอธิบายมากมายก็ถึงเวลาสำหรับตัวอย่างจริง

การใช้งานพื้นฐาน

 ฟังก์ชัน get_my_data () {

$ data = get_transient ('my_transient_name');
ถ้า (false === $ data) {// ชั่วคราวหมดอายุ / ยังไม่ได้ตั้งค่า

$ data = fetch_my_data (); // ดึงข้อมูลจากแหล่งต้นฉบับ

set_transient ('my_transient_name', $ data, HOUR_IN_SECONDS);

}

ส่งคืนข้อมูล $;

}

fetch_my_data () ฟังก์ชันสามารถจัดเก็บ อ็อบเจ็กต์ WP_Query, ข้อมูล json, เนื้อหา html เป็นต้น

ตัวอย่างพื้นฐาน

ดังที่เราได้อธิบายไปแล้วว่าการแคชประเภทนี้ดีสำหรับการบันทึกผลของการดำเนินการที่ยาวนานและตัวอย่างที่ง่ายที่สุดคือการเข้าถึง API ภายนอกเช่น Facebook

ลองนึกภาพว่าเรามีฟังก์ชั่นต่อไปนี้ซึ่งเข้าถึง API ของ Facebook ร้องขอออบเจ็กต์ (อย่างแม่นยำมากขึ้นเพจ) your-website.url และส่งคืนจำนวนไลค์ของเพจ:

 ฟังก์ชัน get_facebook_likes () {

$ result = wp_remote_get ('https://graph.facebook.com/your-website.url');

$ result = json_decode (wp_remote_retrieve_body ($ result));

ส่งคืน $ result-> ไลค์;

}

สะท้อน "ไลค์ Facebook:" get_facebook_likes ();

เวลาดำเนินการของฟังก์ชันนี้ขึ้นอยู่กับหลายปัจจัยรวมถึงตำแหน่งของเซิร์ฟเวอร์ของคุณที่สัมพันธ์กับเซิร์ฟเวอร์ Facebook สถานะและความเร็วของเครือข่าย ฯลฯ โดยเฉลี่ยแล้วฟังก์ชันอาจใช้เวลา 1-3 วินาที

ซึ่งหมายความว่าเมื่อใช้ฟังก์ชันนี้บนไซต์เวลาในการโหลดของแต่ละหน้าจะเพิ่มขึ้น 1-3 วินาที ยิ่งไปกว่านั้นหากเราเรียกใช้ฟังก์ชันนี้มากกว่า 500 ครั้งใน 500 วินาที Facebook จะเริ่มสร้างข้อผิดพลาดแทนที่จะเป็นผลลัพธ์

เพื่อเพิ่มความเร็วคุณสมบัตินี้เราสามารถใช้ WordPress Transients API และบันทึกผลเป็นเวลา 1 ชั่วโมง:

 ฟังก์ชัน get_facebook_likes () {
ถ้า (เท็จ === ($ likes = get_transient ('fb_likes'))) {
$ result = wp_remote_get ('https://graph.facebook.com/your-website.url');
$ result = json_decode (wp_remote_retrieve_body ($ result));
$ likes = $ result-> ไลค์;

// ตั้งค่าชั่วคราวเป็นเวลาหนึ่งชั่วโมงเป็นวินาที
set_transient ('fb_likes', $ likes, 1 * HOUR_IN_SECONDS);
}

กลับ $ ชอบ;
}

ดังนั้นเมื่อมีการเรียกใช้ฟังก์ชันนี้เป็นครั้งแรกหลังจากได้รับคำขอจาก Facebook WordPress จะเขียนผลลัพธ์ไปยังฐานข้อมูลและในอนาคตจะส่งคืนผลลัพธ์นี้จากฐานข้อมูลเป็นเวลาหนึ่งชั่วโมงโดยไม่ต้องร้องขอซ้ำไปยังเซิร์ฟเวอร์ Facebook และหลังจากผ่านไปหนึ่งชั่วโมงฟังก์ชั่นนี้จะเปลี่ยนเป็นข้อมูลของ Facebook อีกครั้ง

ด้วยวิธีนี้การเรียกใช้ฟังก์ชันนี้เพียงครั้งเดียวต่อชั่วโมงจะเพิ่มเวลาในการร้องขอขึ้น 1-3 วินาทีและการโทรที่ตามมาจะออกทันที

ตัวอย่างที่ซับซ้อนมากขึ้น

ลองนึกภาพว่าเรามีเว็บไซต์ที่มีประมาณ 100 หมวดหมู่และประมาณ 50,000 โพสต์และในการออกแบบโพสต์เดียวของเว็บไซต์เรามีวิดเจ็ตที่แสดงโพสต์ที่เกี่ยวข้องกับ N จากหมวดหมู่ที่โพสต์ปัจจุบันอยู่ ตามที่คาดไว้แบบสอบถามที่ซับซ้อนนี้จะใช้เวลาสักครู่เพื่อนำผลลัพธ์จากฐานข้อมูลมาแสดงบนเว็บไซต์

ลองนึกดูว่าคุณมีผู้ใช้ 10,000 คนที่เข้าถึงเว็บไซต์ในเวลาเดียวกัน ซึ่งหมายความว่าเราจะมีคำขอฐานข้อมูลมากกว่า 10,000 รายการที่ต้องทำแบบสอบถาม (นี่เป็นคำค้นหาที่ซับซ้อนเนื่องจากจะค้นหาผ่าน wp_terms, wp_term_relationships, wp_term_taxonomy, ตาราง wp_posts ดังนั้นจึงมีมากกว่า 10,000 แบบสอบถาม) เพื่อรับ ผลลัพธ์สำหรับ N โพสต์จากหมวดหมู่ที่เกี่ยวข้องและแสดงไว้ที่ส่วนหน้า ในทางกลับกันจะทำให้ฐานข้อมูลทำงานหนักเกินไปและทำให้เวลาโหลดโดยรวมของเว็บไซต์ล่าช้าและในบางกรณีอาจเกิดความผิดพลาดเนื่องจากการใช้งานฐานข้อมูลมากเกินไป

และต่อไปนี้เป็นคำถามว่าเราจะเพิ่มประสิทธิภาพและลดจำนวนคิวรีและคำขอฐานข้อมูลได้อย่างไร เหตุใดจึงมีแบบสอบถามมากมายทุกครั้งเมื่อเราสามารถใช้ประโยชน์จาก Transients API และเพียงแค่แคชวัตถุแบบสอบถามหรือแคชเอาต์พุต HTML ทั้งหมด ด้วยวิธีนี้เราจะลดและเพิ่มประสิทธิภาพจำนวนการสืบค้นฐานข้อมูลซึ่งจะนำไปสู่ประสิทธิภาพของเว็บไซต์ที่ดีขึ้นและประสบการณ์ของผู้ใช้ที่ดีขึ้น

ในกรณีของเราการสืบค้นจะค้นหาใน wp_terms, wp_term_relationships, wp_term_taxonomy, wp_posts ตาราง เพื่อให้ได้ผลลัพธ์ที่คาดหวังทั้งหมด

นี่คือตัวอย่างที่สมบูรณ์ว่าเราจะทำสิ่งนี้ให้สำเร็จได้อย่างไร:

 function show_posts_from_category () {
$ args = อาร์เรย์ (
'cat' => 555, // รหัสประเภทสุ่ม
'posts_per_page' => 8, // สุ่มจำนวนโพสต์ที่เกี่ยวข้องเพื่อแสดง
'No_found_rows' => จริง
);

$ hash = md5 ($ args ['cat']); // แฮช MD5 ของ ID หมวดหมู่
$ transient_key = 'category-' แฮช $; // คีย์ชั่วคราว

if (false === ($ posts_from_category_html = get_transient ($ transient_key))): // ชั่วคราวหมดอายุ / ยังไม่ได้ตั้งค่า

$ the_query = WP_Query ใหม่ ($ args); // รับแบบสอบถาม

ob_start (); // เปิดการบัฟเฟอร์เอาต์พุต

ในขณะที่ ($ the_query-> have_posts ()): $ the_query-> the_post ();
?>
<div class = "item">
<div class = "bigthumb">
<a href="<?php the_permalink();?> "rel =" bookmark "title =" <? php the_title ();?> "> <? php if (has_post_thumbnail ()) the_post_thumbnail ('big-thumb' ); ?> </a>
</div>
<h3> <a href="<?php the_permalink();?> "rel =" bookmark "title =" <? php the_title ();?> "> <? php the_title (); ?> </a> </h3>
<? php the_excerpt (); ?>
</div>
<? php
ในที่สุด;

$ post_from_category_html = ob_get_contents (); // รับเนื้อหาของบัฟเฟอร์เอาต์พุตโดยไม่ต้องล้างข้อมูล
ob_end_clean (); // ปิดการบัฟเฟอร์เอาต์พุตนี้

set_transient ($ transient_key, $ posts_from_category_html, $ transient_expire = 15 * MINUTE_IN_SECONDS); // การตั้งค่าชั่วคราวด้วยเวลาหมดอายุ 15 นาที

wp_reset_postdata ();
เอนดิฟ;

ส่งคืน $ post_from_category_html;
}

ความคิดสุดท้าย

การแคชเป็นวิธีที่ยอดเยี่ยมในการเร่งความเร็ว แต่คุณต้องรู้ให้แน่ชัดว่าคุณกำลังแคชอะไรอยู่ที่ไหนทำได้เมื่อไรและอย่างไรมิฉะนั้นคุณจะเสี่ยงต่อผลที่ไม่คาดคิด

หากคุณไม่แน่ใจว่ามีบางอย่างทำงานตามที่ตั้งใจไว้หรือไม่ให้หันไปใช้การทำโปรไฟล์เสมอ - ดูที่แต่ละแบบสอบถามเทียบกับฐานข้อมูลดูการเรียกใช้ฟังก์ชัน PHP ทั้งหมดเวลาและการใช้หน่วยความจำ

Transients API เป็นวิธีที่ยอดเยี่ยมในการเพิ่มประสิทธิภาพเวลาในการโหลดเว็บไซต์ WordPress ของคุณและเพื่อมอบประสบการณ์การใช้งานที่ยอดเยี่ยมแก่ผู้ใช้ การใช้ชั่วคราวในปลั๊กอินและธีมของคุณนั้นง่ายมากและเพิ่มโค้ดพิเศษเพียงไม่กี่บรรทัด เมื่อใช้ในสถานการณ์ที่เหมาะสมเช่นการสืบค้นฐานข้อมูลแบบยาวหรือข้อมูลที่ประมวลผลที่ซับซ้อนสามารถช่วยประหยัดเวลาในการโหลดบนไซต์ของคุณได้เป็นวินาที