ปิดใช้งานแคชสำหรับบล็อกเฉพาะ


9

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

เป็นไปได้ทางเทคนิคหรือไม่ อย่างไร?


ตามที่ระบุไว้ MPD ใช้การตั้งค่าสูงสุดอายุ นอกจากนี้คุณยังสามารถทำสิ่งนี้ผ่าน UI บนแบบฟอร์มแก้ไขบล็อกด้วย

ฉันมีปัญหานี้เช่นกัน - มันน่ารำคาญที่ Drupal ไม่จัดการกับเรื่องนี้โดยอัตโนมัติ การแคชเป็นสิ่งที่ดี แต่ Drupal น่าจะเหมาะสำหรับเว็บไซต์ที่มีพลวัต ...
James

คำตอบ:


1

บล็อกการดูนั้นแสดงอะไร

D8 มีแท็กแคชและบริบทที่จะทำให้บล็อกใช้ไม่ได้โดยอัตโนมัติหากมีสิ่งใดเปลี่ยนแปลง

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

นอกจากนี้ยังทำงานร่วมกับแคชของหน้าหน้าเหล่านั้นจะได้รับการอัปเดตโดยอัตโนมัติเช่นกัน

หลายสิ่งหลายอย่างเพียงทำงานกับการแคชออกจากกล่องโดยไม่จำเป็นต้องกำหนดค่าด้วยตนเอง

แก้ไข (ตอบกลับความคิดเห็น):

สุ่มด้วยปลั๊กอินการเรียงลำดับแบบสุ่ม? ควรทำเครื่องหมายบล็อกนั้นว่าไม่สามารถแคชได้โดยอัตโนมัติ อย่างไรก็ตามไม่มีผลกับโมดูลแคชของหน้า ขณะนี้มีโมดูลแคชหน้า smartcache / ไดนามิกใหม่ แต่จะอยู่ในรุ่นเบต้าถัดไปเท่านั้น (หรือ RC!) ในที่สุดจะอนุญาตให้แคชส่วนที่เหลือของหน้าและเพิ่งสร้างส่วนนั้น

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


มุมมองจะคืนค่าโหนดแบบสุ่มเพื่อเปลี่ยนโฆษณาของกลุ่ม
Amine

ฉันจะรอรุ่นถัดไปสำหรับวิธีแก้ปัญหาที่สะอาด :) :)
Amine

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

10

หากนี่เป็นบล็อกที่กำหนดเองคุณสามารถใช้Cache APIและตั้งค่าแคชอายุสูงสุดเป็น 0 เช่น

$build = [
 // ...
 '#cache' => [
   'max-age' => 0,
 ],
];

หากเป็นบล็อกที่มีอยู่คุณสามารถแก้ไขเพื่อเพิ่มสิ่งนี้ลงในอาร์เรย์การแสดงผล


ตามที่อธิบายในคำถามบล็อกของฉันคือบล็อก Views ฉันคิดว่ามันซับซ้อนเกินไปที่จะเข้าไปยุ่งเกี่ยวกับเลเยอร์ PHP / โมดูล
Amine

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