ตัวเลือกทั้งหมดถูกโหลดไปยังหน่วยความจำในคำขอแต่ละครั้งหรือไม่


25

ตัวแปรตัวเลือกทั้งหมดถูกดึงมาจากฐานข้อมูลและโหลดไปยังแคชในแต่ละคำขอหรือไม่

คำตอบ:


24

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

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

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

หากคุณกังวลเกี่ยวกับการโทรget_optionหลายครั้งต่อการโหลดหน้าเว็บ WordPress จะแคชค่าตัวเลือกหลังจากการget_optionโทรครั้งแรกโดยไม่คำนึงว่าจะมีการโหลดอัตโนมัติหรือไม่

ลองดูแหล่งข้อมูลget_optionเพื่อดูว่าเกิดอะไรขึ้น


3

ไม่มี

เฉพาะตัวเลือกที่โหลดโดยเฉพาะเมื่อตั้งค่า autoload เป็นจริงเท่านั้น

ดูhttp://codex.wordpress.org/Function_Reference/add_option

ดังนั้นหากเป็นตัวเลือกที่จำเป็นสำหรับทุกหน้าเมื่อคุณเพิ่มลงใน db ให้ตั้งค่า autoload = true

หลังจากนั้นเพียงใช้ get_option ตามปกติ - wp จะจัดการกับการแคชเป็นต้น


1
WP จัดการกับแคชโดยไม่คำนึงถึง autoload
chrisguitarguy

0

ใช่,

ไม่จำเป็นต้องตั้งค่า autoload เป็นใช่ / จริง มันถูกตั้งค่าเป็นใช่โดยค่าเริ่มต้น: http://codex.wordpress.org/Function_Reference/add_option - พารามิเตอร์ฟังก์ชันสุดท้าย ($ autoload):

ตัวเลือกนี้จะถูกโหลดโดยอัตโนมัติโดยฟังก์ชั่น wp_load_alloptions () (ใส่ตัวเลือกลงในแคชวัตถุในการโหลดหน้าแต่ละหน้า) หรือไม่ ค่าที่ถูกต้อง: ใช่หรือไม่ เริ่มต้น: ใช่

แม้ว่าคุณจะตั้งค่าเป็นไม่ก็ตามตัวเลือกจะไม่ถูกแคช

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.