Score:0

การแบ่งปันการดำเนินการจำนวนมากระหว่างองค์ประกอบต่างๆ ของเพจ

ธง cn

ฉันมีเพจที่มีองค์ประกอบสองเพจแยกกัน หนึ่งคือแบบฟอร์มเลือกตารางที่แสดงรายการข้อมูลเนื้อหามากมาย องค์ประกอบของหน้าอื่นๆ คือบล็อกที่แสดงข้อมูลสรุปของเนื้อหาเดียวกันนั้น

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

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

cn flag
วิธีการทั่วไปคือการกำหนดบริการที่สืบค้นข้อมูลและแคชผลลัพธ์แบบคงที่ จากนั้นบล็อกทั้งสองจะใช้วิธีการที่เกี่ยวข้องจากบริการนั้น แต่เฉพาะการใช้งานครั้งแรกเท่านั้นที่ทำให้เกิดการเข้าชม DB [`drupal_static`](https://api.drupal.org/api/drupal/core%21includes%21bootstrap.inc/function/drupal_static/9.2.x) มีประโยชน์มากสำหรับสิ่งนี้
4uk4 avatar
cn flag
นอกจากนี้ โดยปกติแล้ว สิ่งที่คุณสอบถามในฐานข้อมูลสามารถแคชระหว่างคำขอได้ คุณสามารถใส่ผลลัพธ์ของคิวรีในถังแคช เช่น `cache_default` และแท็กเพื่อให้ผลลัพธ์เป็นโมฆะเมื่อข้อมูลเปลี่ยนแปลงในฐานข้อมูล
Rubix05 avatar
cn flag
โอ้ ว้าว ฉันไม่รู้ด้วยซ้ำว่า drupal_static เป็นอะไร ฉันมีฟังก์ชันที่สร้างขึ้นด้วยบริการอยู่แล้ว ดังนั้นฉันจึงสามารถใส่ drupal_static ได้อย่างรวดเร็วฉันยังคงต้องทำการทดสอบเพิ่มเติม แต่จนถึงตอนนี้ ดูเหมือนจะเป็นสิ่งที่ฉันต้องการทุกประการ ขอบคุณ!
4uk4 avatar
cn flag
หากคุณมีบริการอยู่แล้ว คุณไม่จำเป็นต้องใช้ drupal_static เพราะคุณสมบัติของคลาสของบริการจะคงอยู่ตลอดคำขอทั้งหมด
Rainer Feike avatar
in flag
นอกเหนือจากการแก้ปัญหาด้านประสิทธิภาพด้วย drupal หรือ php (พูดในฝั่งไคลเอนต์) - คุณควรแก้ไขได้ใน DB Backend ของคุณ สำหรับ DBs สมัยใหม่ที่รันเคียวรีเดียวกันหลายๆ ครั้ง ควรขยายเฉพาะในครั้งแรกเท่านั้น มากกว่านั้น คุณควรเน้นที่ฝั่งไคลเอ็นต์แคชตามที่ระบุไว้ใน Drupal Cache API https://www.drupal.org/docs/8/api/cache-api/cache-api และ - โดยค่าเริ่มต้น - แคชของ Drupal จะถูกจัดเก็บไว้ใน DB ด้วย - ดังนั้นคุณจึงอาจประหยัดเวลาในการคำนวณคิวรีแต่ไม่สามารถประหยัดแบนด์วิธได้.... การแคชไม่เคยง่ายเลย
Rainer Feike avatar
in flag
แต่ฉันเห็นด้วยกับ 4k4 et.all หากทั้งหมดอยู่ในคำขอเดียวกัน ให้ใช้ตัวแปรขอบเขตคำขอ (แต่ไม่ใช่หากบล็อกของคุณมีบริบทอื่น จากนั้นจะเป็นเพจของคุณ)

โพสต์คำตอบ

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