ฉันควรใช้ฟิลด์ Drupal ที่มีอยู่ซ้ำหรือไม่
เผยแพร่แล้ว: 2022-02-16บางครั้งเราสามารถให้คำแนะนำที่ชัดเจนได้: "ทำเช่นนี้!" หรือ "อย่าทำอย่างนั้น!"
นี่จะไม่ใช่หนึ่งในโพสต์บล็อกเหล่านั้น
Drupal ช่วยให้คุณสามารถนำฟิลด์กลับมาใช้ใหม่ได้ หากคุณมีฟิลด์ "รูปภาพ" คุณสามารถเลือกใช้ฟิลด์เดียวกันนั้นกับเนื้อหาทุกประเภทบนไซต์ของคุณได้ อย่างไรก็ตาม ไม่ชัดเจนเสมอไปว่าการใช้ฟิลด์ซ้ำเป็นความคิดที่ดีหรือไม่ บางครั้งก็เป็นบางครั้งก็ไม่ใช่
นี่คือภาพรวมของข้อดีและข้อเสียที่ต้องพิจารณาก่อนนำฟิลด์ Drupal กลับมาใช้ใหม่
คำแนะนำทั่วไปเกี่ยวกับการนำฟิลด์กลับมาใช้ใหม่
คุณสามารถเลือกคุณสมบัติ "ใช้ช่องที่มีอยู่ซ้ำ" ได้ทุกเมื่อที่คุณไปที่ "โครงสร้าง" จากนั้นเลือก "ประเภทเนื้อหา" แล้วคลิก "จัดการช่อง" สำหรับประเภทเนื้อหา
เอกสารของ Drupal.org ใช้เพื่อแนะนำอย่างเป็นทางการว่าอย่าใช้ฟิลด์ซ้ำ:
ขอแนะนำให้สร้างฟิลด์ใหม่ แทนที่จะใช้ฟิลด์ที่มีอยู่ซ้ำ เว้นแต่คุณจะมีเหตุผลที่ชัดเจนในการทำเช่นนั้น
อย่างไรก็ตาม คำแนะนำนั้นมีความเหมาะสมยิ่งขึ้นในช่วงไม่กี่ปีที่ผ่านมา และ Drupal กล่าวอย่างเป็นทางการว่าเป็นทั้งข้อดีและข้อเสีย
เอกสารประกอบ Drupal Field UI มีส่วนรายละเอียดที่เรียกว่า "การใช้ฟิลด์ซ้ำ":
มีเหตุผลหลักสองประการสำหรับการนำฟิลด์กลับมาใช้ใหม่ ขั้นแรก การใช้ฟิลด์ซ้ำสามารถช่วยคุณประหยัดเวลาในการกำหนดฟิลด์ใหม่ ประการที่สอง การใช้ฟิลด์ซ้ำยังทำให้คุณสามารถแสดง กรอง จัดกลุ่ม และจัดเรียงเนื้อหาร่วมกันตามฟิลด์ในประเภทเนื้อหาต่างๆ ตัวอย่างเช่น โมดูล Views ที่สนับสนุนให้คุณสร้างรายการและสารบัญ ดังนั้น หากคุณใช้ฟิลด์เดียวกันในเนื้อหาหลายประเภท คุณสามารถสร้างมุมมองที่มีประเภทเนื้อหาเหล่านั้นทั้งหมดพร้อมกันโดยแสดงฟิลด์นั้น จัดเรียงตามฟิลด์นั้น และ/หรือกรองตามฟิลด์นั้น มีเหตุผลหลักประการหนึ่งที่จะไม่ใช้ฟิลด์ซ้ำ นั่นคือ สิทธิ์ที่แตกต่างกัน ตัวอย่างเช่น คุณอาจต้องการบทบาทของผู้ใช้ที่แตกต่างกันเพื่อให้มีระดับการเข้าถึงฟิลด์ที่แตกต่างกัน ขึ้นอยู่กับประเภทเนื้อหาที่เพิ่มเข้ามา อาจเป็นเรื่องยากหากคุณนำฟิลด์มาใช้ซ้ำ
ข้อดี: การใช้ฟิลด์ซ้ำอาจทำให้คุณง่ายขึ้น
ใช่ สามารถเพิ่มความเร็วได้ แต่ประหยัดเวลาได้น้อยมาก ข้อได้เปรียบที่น่าสนใจกว่าคือบางครั้งการใช้ฟิลด์ซ้ำอาจทำให้การดูแลไซต์ง่ายขึ้น Web Initiative สรุปสิ่งนี้ไว้อย่างดี:
การใช้ฟิลด์ซ้ำยังช่วยลดความซับซ้อนของระบบได้อีกด้วย แทนที่จะสร้างและดูแล 10 ฟิลด์ที่แตกต่างกัน ผู้ดูแลระบบ Drupal จะรักษาเพียงสองฟิลด์และเอกสารประกอบเท่านั้น ผู้ดูแลระบบฐานข้อมูลจำเป็นต้องปรับปรุงประสิทธิภาพของตารางพิเศษสองตารางเท่านั้น KISS เป็นหลักการที่ดีเสมอ
การใช้การอนุญาต การตั้งค่า และองค์ประกอบการออกแบบกับฟิลด์ที่นำกลับมาใช้ใหม่จะง่ายกว่าแน่นอนที่จะใช้ 10 ฟิลด์ที่ไม่ซ้ำ
ข้อดี: เนื้อหาบางส่วนทำงานได้ดีกับช่องที่นำกลับมาใช้ใหม่
กลับไปที่เอกสารประกอบ Drupal Field UI อีกครั้ง:
การใช้ฟิลด์ซ้ำยังทำให้คุณสามารถแสดง กรอง จัดกลุ่ม และจัดเรียงเนื้อหาร่วมกันตามฟิลด์ในประเภทเนื้อหาต่างๆ ตัวอย่างเช่น โมดูล Views ที่สนับสนุนให้คุณสร้างรายการและสารบัญ ดังนั้น หากคุณใช้ฟิลด์เดียวกันในเนื้อหาหลายประเภท คุณสามารถสร้างมุมมองที่มีประเภทเนื้อหาเหล่านั้นทั้งหมดพร้อมกันโดยแสดงฟิลด์นั้น จัดเรียงตามฟิลด์นั้น และ/หรือกรองตามฟิลด์นั้น
ผู้เขียนความคิดเห็นคนหนึ่งในเอกสารประกอบของ Drupal.org ให้ความสำคัญกับ Views เช่นเดียวกัน พวกเขาชี้ให้เห็นว่า Views สามารถรวมเนื้อหาในรูปแบบที่ซับซ้อนได้ ดังนั้น หากคุณมีประเภทเนื้อหาที่แตกต่างกันหลายประเภท โดยมีช่องวันที่ต่างกัน Views สามารถรวมเนื้อหาเหล่านั้นเป็นมุมมองเดียวได้ อย่างไรก็ตาม พวกเขายังชี้ให้เห็นว่า Views ไม่ได้ซับซ้อนนักกับการจัดเรียง ดังนั้น หากคุณมีประเภทเนื้อหาที่แตกต่างกันหลายประเภท โดยมีช่องวันที่ต่างกัน Views จะพยายามจัดเรียงเนื้อหาในฟิลด์วันที่ที่แตกต่างกันทั้งหมด

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

คำแนะนำนี้คล้ายกับความคิดของเราในการใช้หลายไซต์ เมื่อใดก็ตามที่คุณเริ่มสร้างการพึ่งพาระหว่าง codebases หรือตารางฐานข้อมูล คุณจะเพิ่มความซับซ้อนให้กับไซต์ของคุณ
ได้เปรียบหรือเสียเปรียบ? ประสิทธิภาพ
เอกสารประกอบของ Drupal ระบุถึงประโยชน์ที่เป็นไปได้ประการหนึ่งของการนำฟิลด์กลับมาใช้ใหม่:
การนำฟิลด์มาใช้ซ้ำไม่เพียงแต่ทำให้ Drupal ทำงานเร็วขึ้น แต่ยังทำให้โปรเจ็กต์ของคุณดูแลได้ง่ายขึ้นอีกด้วย
เธรดบน Stack Overflow นี้มีการอภิปรายเกี่ยวกับประสิทธิภาพที่เกี่ยวข้องมาก รวมถึงความคิดเห็นนี้:
ปัญหาที่แท้จริงคือจำนวนฟิลด์ที่คุณมี เนื่องจากขณะนี้อยู่ใน Drupal 7 การกำหนดค่าฟิลด์ที่สมบูรณ์ของฟิลด์ทั้งหมด ไม่ว่าจะโหลดหรือไม่ก็ตาม จะถูกดึงมาจากแคชในทุกคำขอ ฉันเคยเห็นไซต์ที่มีมากกว่า 250 ฟิลด์ ซึ่งการโหลดและยกเลิกการซีเรียลไลซ์การกำหนดค่าฟิลด์นั้นใช้หน่วยความจำมากกว่า 13MB"
ดังนั้น การใช้ฟิลด์ซ้ำอาจให้การปรับปรุงประสิทธิภาพเล็กน้อย โดยให้เรามีจำนวนฟิลด์รวมน้อยลง
อย่างไรก็ตาม การปรับปรุงเล็กน้อยเหล่านั้นอาจหายไปในที่อื่น จาก Web Initiative อีกครั้ง:
[ฟิลด์] ความซับซ้อนพิเศษของระบบ Drupal เมื่อสร้างฟิลด์ใหม่ คำจำกัดความของฟิลด์จะถูกเพิ่มลงในตารางคลาสฟิลด์ และคอนฟิกูเรชันของฟิลด์จะถูกเพิ่มลงในตารางอินสแตนซ์ของฟิลด์ ในขณะเดียวกัน ตารางใหม่จะถูกเพิ่มในฐานข้อมูล Drupal เพื่อเก็บข้อมูลภาคสนาม ตารางฐานข้อมูลเพิ่มความซับซ้อนให้กับระบบ นอกจากนี้ เคียวรีของโหนดจะทำให้เกิด JOINexpressions ของตารางกับข้อมูลในฟิลด์ การรวมหลายรายการจะส่งผลกระทบต่อประสิทธิภาพของฐานข้อมูล เนื่องจาก MySQL ตอบสนองได้ไม่ดีต่อการสืบค้นที่มี JOIN หลายตาราง หากไม่ได้กำหนดค่าอย่างเหมาะสม
สรุป
ขออภัยที่เราไม่มีคำตอบง่ายๆ สำหรับคำถามนี้ นี่คือคำถามที่คุณจะได้รับประโยชน์จากการอ่านปัญหาและทำความเข้าใจข้อดีข้อเสีย หากคุณกำลังสร้างไซต์จริง การสร้างไซต์ในสภาพแวดล้อมการทดสอบนั้นคุ้มค่า เพื่อเรียนรู้เพิ่มเติมว่าข้อดีและข้อเสียเหล่านี้ส่งผลต่อความต้องการของไซต์ของคุณอย่างไร