ไม่ใช่รหัส WP ทั้งหมดเป็นรหัสสาธารณะ
หากคุณกำลังจะเผยแพร่สิ่งที่เป็นสาธารณะทุกสิ่งที่kovsheninกล่าวจะถูกต้องสมบูรณ์
สิ่งต่าง ๆ ถ้าคุณกำลังจะเขียนรหัสส่วนตัวสำหรับตัวคุณเองหรือ บริษัท ของคุณ
แคชวัตถุภายนอกมีประโยชน์มากในทุกกรณี
ในการตั้งค่าแคชวัตถุถาวรภายนอกขอแนะนำอย่างมากเมื่อคุณสามารถ
ทุกสิ่งที่กล่าวไว้ในคำตอบของ kovshenin เกี่ยวกับ transients และ MySQL นั้นเป็นเรื่องจริงมากและเมื่อพิจารณาว่า WP และปลั๊กอินจำนวนมากใช้ประโยชน์จากแคชวัตถุ ... จากนั้นการปรับปรุงประสิทธิภาพที่คุณได้รับนั้นคุ้มค่ากับความพยายามเล็ก ๆ ระบบแคชที่ทันสมัยเช่น Redis หรือ Memcached
ค่าที่เก็บไว้อาจไม่อยู่ที่นั่น: ก็ดี
นอกจากนี้ใช่แคชวัตถุภายนอกไม่น่าเชื่อถือ คุณไม่ควรพึ่งพาความจริงที่ว่ามีอยู่ชั่วขณะ คุณต้องตรวจสอบให้แน่ใจว่ามันใช้งานได้หากแคชไม่ได้อยู่ในที่ที่ควรจะเป็น
แคชไม่ได้เก็บไว้, แคชคือแคช
ใช้แคชเลือก
ดูตัวอย่างนี้:
function my_get_some_value($key) {
// by default no cache when debug and if no external object_cache
$defUse = ! (defined('WP_DEBUG') && WP_DEBUG) && wp_using_ext_object_cache();
// make the usage of cache filterable
$useCache = apply_filters('my_use_cache', $defUse);
// return cached value if any
if ($useCache && ($cached = get_transient($key))) {
return $cached;
}
// no cached value, make sure your code works with no cache
$value = my_get_some_value_in_some_expensive_way();
// set cache, if allowed
$useCache and set_transient($key, $value, HOUR_IN_SECONDS);
return $value;
}
การใช้รหัสเช่นนี้ในเว็บไซต์ส่วนตัวของคุณประสิทธิภาพของเว็บไซต์สามารถปรับปรุงได้มากโดยเฉพาะหากคุณมีผู้ใช้จำนวนมาก
โปรดทราบว่า:
- โดยค่าเริ่มต้นแคชจะไม่ถูกใช้เมื่อมีการดีบักดังนั้นหวังว่าในสภาพแวดล้อมการพัฒนาของคุณ เชื่อฉันสิแคชสามารถทำให้ดีบั๊กได้
- โดยค่าเริ่มต้นแคชยังไม่ได้ใช้เมื่อ WP ไม่ได้ตั้งค่าให้ใช้แคชวัตถุภายนอก หมายความว่าไม่มีปัญหาทั้งหมดที่เชื่อมต่อกับ MySQL เพราะคุณไม่ได้ใช้ชั่วคราวเมื่อพวกเขาใช้ MySQL ทางเลือกที่ง่ายกว่าน่าจะเป็นการใช้งาน
wp_cache_*
ฟังก์ชั่นดังนั้นหากไม่มีการตั้งค่าแคชภายนอกดังนั้นแคชจะเกิดขึ้นในหน่วยความจำและฐานข้อมูลไม่เกี่ยวข้อง
- การใช้แคชสามารถกรองได้เพื่อจัดการกับขอบบางกรณีที่คุณอาจพบ
ไม่มีหน้าเว็บหากไม่มีแคช
คุณไม่ควรพยายามแก้ไขปัญหาความเร็วของแคช หากคุณมีปัญหาเรื่องความเร็วคุณควรคิดรหัสอีกครั้ง
แต่การที่จะปรับขนาดได้ที่เว็บไซต์ webscale ที่แคชสวยต้อง
และหลายครั้ง (แต่ไม่เสมอไป) แคชที่รับรู้บริบทมีความยืดหยุ่นและเหมาะสมกว่าแคชแบบเต็มหน้าเชิงรุก
คำถามของคุณ:
ฉันควรใช้ Transient API ที่นี่หรือไม่
มันขึ้นอยู่กับ
รหัสของคุณใช้ทรัพยากรจำนวนมากหรือไม่? ถ้าไม่เช่นนั้นอาจไม่จำเป็นต้องใช้แคช ดังที่ได้กล่าวมาไม่ใช่แค่เรื่องของความเร็ว หากรหัสของคุณทำงานเร็ว แต่ต้องการ CPU และหน่วยความจำจำนวนมากสำหรับผู้ใช้สองคน ... จะเกิดอะไรขึ้นเมื่อคุณมีผู้ใช้งานพร้อมกัน 100 หรือ 1,000 คน
หากคุณรู้ว่าแคชจะเป็นความคิดที่ดี ..
... และเป็นรหัสส่วนกลาง: อาจจะไม่มี คุณสามารถพิจารณาเลือกแคชเช่นในตัวอย่างด้านบนของฉันในรหัสสาธารณะ แต่โดยปกติจะดีกว่าถ้าคุณออกจากการตัดสินใจไปยังผู้ใช้งาน
... และเป็นรหัสส่วนตัว: อาจเป็นไปได้ แต่สำหรับรหัสส่วนตัวการเลือกแคชก็ยังคงเป็นสิ่งที่ดีตัวอย่างเช่นสำหรับการดีบั๊ก
โปรดจำไว้ว่าwp_cache_*
ฟังก์ชั่นนั้นสามารถให้คุณเข้าถึงแคชได้โดยไม่ต้องเสี่ยงกับฐานข้อมูล
ฉันควรใช้ Transient API เพื่อแคช $ related_posts array หรือสตริง $ html_output หรือไม่
มันขึ้นอยู่กับหลาย ๆ อย่าง สตริงใหญ่แค่ไหน? คุณกำลังใช้แคชภายนอก หากคุณกำลังจะโพสต์แคชการจัดเก็บ ID เป็นอาร์เรย์อาจเป็นความคิดที่ดีการสอบถามจำนวนการโพสต์ที่เหมาะสมด้วย ID ของพวกเขานั้นค่อนข้างเร็ว
หมายเหตุสุดท้าย
Transient API น่าจะเป็นหนึ่งในสิ่งที่ดีที่สุดของ WordPress ขอบคุณปลั๊กอินที่คุณสามารถค้นหาระบบแคชทุกประเภทมันกลายเป็น API ง่าย ๆ ไปจนถึงซอฟต์แวร์จำนวนมากที่สามารถทำงานได้ภายใต้ประทุน
นอก WordPress สิ่งที่เป็นนามธรรมที่ทำงานนอกกรอบด้วยระบบแคชที่แตกต่างกันมากมายและให้คุณเปลี่ยนจากระบบหนึ่งไปอีกระบบหนึ่งโดยไม่ต้องใช้ความพยายามมากนัก
คุณไม่ค่อยได้ยินฉันพูดว่า WordPress ดีกว่าสิ่งทันสมัยอื่น ๆ แต่ API ชั่วคราวเป็นหนึ่งในสองสามสิ่งที่ฉันพลาดเมื่อฉันไม่ทำงานกับ WordPress
แคชแน่นอนยากไม่แก้ปัญหารหัสและไม่ใช่ bullet เงิน แต่เป็นสิ่งที่คุณต้องสร้างไซต์ที่มีปริมาณการใช้งานสูง
แนวคิดของ WordPress ในการใช้ตาราง MySQL ภายใต้การทำแคชที่ไม่เหมาะสม แต่ก็ไม่ดีกว่าที่จะป้องกันตัวคุณเองให้ห่างจากแคชเพียงเพราะ WordPress เป็นค่าเริ่มต้น
คุณเพียงแค่ต้องเข้าใจว่าสิ่งต่าง ๆ ทำงานอย่างไรจากนั้นเลือก