จะปิดการแคชได้อย่างไร


26

ฉันกำลังพัฒนาเว็บไซต์ใน Drupal 7 และการแคชช้าลงอย่างมาก ตัวอย่างเช่นฉันมีฟังก์ชันชุดรูปแบบสำหรับฟอร์ม ฉันงงงวยทำไมมันไม่ทำงาน จนกว่าฉันจะล้างแคชและได้รับการแก้ไข

วิธีการปิดอย่างสมบูรณ์?

คำตอบ:


21

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

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


นี่เป็นเพียงการลงทะเบียนธีมเท่านั้น
Andrew Welch

2
คำถามคือ "จะปิดได้อย่างไร" นี่เป็นเพียงส่วนหนึ่งเท่านั้น
SeanJA

29

คุณสามารถแทนที่แบ็กเอนด์แคชเริ่มต้นเป็นอันที่ไม่ได้ทำอะไรเลย เพียงเพิ่มไฟล์นี้ลงในไฟล์ settings.php ของคุณ:

if (!class_exists('DrupalFakeCache')) {
  $conf['cache_backends'][] = 'includes/cache-install.inc';
}
// Default to throwing away cache data.
$conf['cache_default_class'] = 'DrupalFakeCache';
// Rely on the DB cache for form caching - otherwise forms fail.
$conf['cache_class_cache_form'] = 'DrupalDatabaseCache';

เพื่อให้แน่ใจว่ากำหนดเวลาหมดอายุแคชเป็นไม่มีในหน้าประสิทธิภาพ

จริง ๆ แล้วฉันใช้สิ่งนี้ในไฟล์ settings.local.php ซึ่งหากมีอยู่จะถูกรวมไว้ที่ด้านล่างของไฟล์ settings.php ของฉันเพื่อให้ฉันสามารถซิงค์ settings.php จากสภาพแวดล้อมแบบสดหรือแบบ staging ไปยังสภาพแวดล้อม dev โดยไม่ต้องกังวล เกี่ยวกับการใช้การตั้งค่าฐานข้อมูลผิด, ผลักดันการตั้งค่า dev เป็น live โดยไม่ตั้งใจ

settings.php:

if (file_exists(__DIR__ . '/settings.local.php')) {
  require_once __DIR__ . '/settings.local.php';
}

4
คุณสามารถใช้เคล็ดลับเดียวกันนี้เพื่อปิดการแคชต่อถังขยะ เช่น. $conf['cache_class_cache_metatag'] = 'DrupalFakeCache';
อัลเฟรดอาร์มสตรอง

4
นี่ควรเป็นคำตอบที่ได้รับการยอมรับเนื่องจากคำตอบที่ได้รับการยอมรับจะอธิบายถึงวิธีการปิดการใช้งานแคชรีจิสตรีของธีมเท่านั้นไม่ใช่แคชทั้งหมด
mastazi

10

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

มี hooks จำนวนมากที่ใช้สำหรับสร้างข้อมูลเกี่ยวกับเอนทิตีที่มีอยู่, ฟิลด์, แบบฟอร์ม, hooks ที่ใช้งานและอื่น ๆ ที่ต้องการดำเนินการเพียงครั้งเดียวในขณะนี้คุณไม่ต้องการป้องกันมัน

เมื่อคุณคุ้นเคยกับ Drupal คุณจะได้เรียนรู้สิ่งที่ต้องการแคชที่ชัดเจนและอาจเป็นมิตรกับทางลัดเมนูผู้ดูแลระบบหรือdrush cc allสิ่งนี้จะไม่เป็นปัญหาอีกต่อไป


ตกลงเมื่อคุณตระหนักว่า hooks ใหม่ส่วนใหญ่ต้องการแคชที่ชัดเจนก่อนที่จะรับรู้การแล่นเรือใบเรียบจากที่นั่นออก! :)
Alex Weber

2
หลังจากผ่านไปสองสามเดือนของการพัฒนา Drupal ฉันยังพบว่านี่เป็นปัญหา ฉันเชื่อว่าในขณะที่การพัฒนาความเร็วในพื้นที่ไม่สำคัญคุณไม่มีผู้ใช้หลายคนที่ส่งคำขอพร้อมกัน ในกรอบอื่น ๆ ส่วนใหญ่ (Django, Symfony และอื่น ๆ ) ที่ปิดใช้งานแคชในขณะที่การพัฒนาในพื้นที่เป็นตัวเลือกที่พร้อมใช้งานฉันไม่เห็นสาเหตุที่ฉันไม่สามารถใช้งาน Drupal ได้เช่นกัน ทุกวันฉันมีอย่างน้อยหนึ่งอินสแตนซ์ที่บางอย่างไม่ทำงานและเหตุผลคือฉันลืมล้างแคชมันเกิดขึ้นบ่อยมากและทำให้ฉันรำคาญ
mastazi

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