ฉันต้องการให้หน้าเว็บยังคงได้รับประโยชน์จากกลไกการแคชของ Drupal 8 สำหรับผู้ใช้ที่ไม่ระบุตัวตนยกเว้นบล็อกที่เฉพาะเจาะจงซึ่งควรอัปเดตในทุกการรีเฟรชหน้าโดยรู้ว่าพวกเขาสร้างขึ้นจาก Views
เป็นไปได้ทางเทคนิคหรือไม่ อย่างไร?
ฉันต้องการให้หน้าเว็บยังคงได้รับประโยชน์จากกลไกการแคชของ Drupal 8 สำหรับผู้ใช้ที่ไม่ระบุตัวตนยกเว้นบล็อกที่เฉพาะเจาะจงซึ่งควรอัปเดตในทุกการรีเฟรชหน้าโดยรู้ว่าพวกเขาสร้างขึ้นจาก Views
เป็นไปได้ทางเทคนิคหรือไม่ อย่างไร?
คำตอบ:
บล็อกการดูนั้นแสดงอะไร
D8 มีแท็กแคชและบริบทที่จะทำให้บล็อกใช้ไม่ได้โดยอัตโนมัติหากมีสิ่งใดเปลี่ยนแปลง
ดังนั้นหากคุณมีรายการโหนดทุกครั้งที่มีการเพิ่มหรือปรับปรุงโหนดบล็อกนั้นจะได้รับการอัปเดต แต่จนถึงตอนนี้จะมีการใช้เวอร์ชันแคช ซึ่งดีกว่าการสร้างใหม่ในทุกหน้า
นอกจากนี้ยังทำงานร่วมกับแคชของหน้าหน้าเหล่านั้นจะได้รับการอัปเดตโดยอัตโนมัติเช่นกัน
หลายสิ่งหลายอย่างเพียงทำงานกับการแคชออกจากกล่องโดยไม่จำเป็นต้องกำหนดค่าด้วยตนเอง
แก้ไข (ตอบกลับความคิดเห็น):
สุ่มด้วยปลั๊กอินการเรียงลำดับแบบสุ่ม? ควรทำเครื่องหมายบล็อกนั้นว่าไม่สามารถแคชได้โดยอัตโนมัติ อย่างไรก็ตามไม่มีผลกับโมดูลแคชของหน้า ขณะนี้มีโมดูลแคชหน้า smartcache / ไดนามิกใหม่ แต่จะอยู่ในรุ่นเบต้าถัดไปเท่านั้น (หรือ RC!) ในที่สุดจะอนุญาตให้แคชส่วนที่เหลือของหน้าและเพิ่งสร้างส่วนนั้น
แต่กรณีเช่นนี้อาจใช้งานได้ดีที่สุดโดยใช้จาวาสคริปต์ หากมีเพียงไม่กี่โหนดที่คุณสามารถแสดงได้ทั้งหมดให้ซ่อนโดยค่าเริ่มต้นและเพียงแค่ทำให้มองเห็นอย่างใดอย่างหนึ่ง หรือขอ URL ด้วย javascript ที่ส่งคืนโฆษณาแบบสุ่มหรือเยี่ยมชมสุ่ม URL ที่แต่ละรายการส่งคืนโฆษณา (เช่นโดยการส่งคืนรายการ URL แล้วเลือกหนึ่งรายการ) คุณสามารถทำได้โดยตรงสำหรับ URL รูปภาพ .
หากนี่เป็นบล็อกที่กำหนดเองคุณสามารถใช้Cache APIและตั้งค่าแคชอายุสูงสุดเป็น 0 เช่น
$build = [
// ...
'#cache' => [
'max-age' => 0,
],
];
หากเป็นบล็อกที่มีอยู่คุณสามารถแก้ไขเพื่อเพิ่มสิ่งนี้ลงในอาร์เรย์การแสดงผล