Score:1

บล็อกที่กำหนดเองยังคงแคชสำหรับผู้ใช้ที่ไม่ระบุชื่อ แม้ว่า getCacheMaxAge() จะถูกตั้งค่าเป็น 0 และไม่สามารถหาสาเหตุได้

ธง ng

ฉันมีบล็อก Drupal 8 แบบกำหนดเองพร้อมคลาสที่มีฟังก์ชัน build() และ getCacheMaxAge() getCacheMaxAge() ถูกตั้งค่าเป็น 0 แต่ยังคงถูกแคชสำหรับผู้ใช้ที่ไม่ระบุตัวตน

ถ้าฉันใส่รหัสดีบักในฟังก์ชัน build() ฉันจะเห็นว่ามันถูกเรียกเมื่อฉันเข้าสู่ระบบ แต่ไม่ใช่สำหรับผู้ใช้ที่ไม่ระบุตัวตน

รหัสของฉันอยู่ด้านล่าง เราได้ติดตั้ง Memcached แล้ว นั่นจะทำให้เกิดปัญหาหรือไม่?

โมดูลแคชอื่น ๆ เท่านั้นที่เป็นแกนหลัก

<?php
class HeaderPhone extends BlockBase {
  /**
   * {@inheritdoc}
   */
  public function build() {

    $info = geo_location_blocks_get_region();
    $region = $info['region'];
    $tid = $info['tid'];

    return array(
        '#theme' => 'geo_location_header_phone',
        '#region' => $region,
        '#view' => views_embed_view('locations', 'block_3', $tid),
      
    );
  }

  /**
   * @return int
  */
  public function getCacheMaxAge() {
    return 0;
  }
}?>

  
Jaypan avatar
de flag
คุณอาจต้องเพิ่ม max-age ให้กับอาร์เรย์เรนเดอร์ด้วย โดยใช้ `'#cache' => ['max-age' => 0]]`
quantumized avatar
ng flag
ขอบคุณ Jaypan ฉันได้ลองเพิ่ม #cache ให้กับอาร์เรย์เรนเดอร์ตามที่แนะนำ แต่บล็อกยังคงแคชสำหรับผู้ใช้ที่ไม่ระบุตัวตน
Jaypan avatar
de flag
อ่านโพสต์ของคุณอีกครั้ง memcached อาจเป็นปัญหา คุณสามารถลองปิดการใช้งานและดูว่าปัญหายังคงมีอยู่หรือไม่ หรือทดสอบกับสภาพแวดล้อมโดยปิดใช้งาน Memcache ความเป็นไปได้อีกอย่างคือแคชของเพจอาจกำลังแคชทั้งเพจสำหรับผู้ใช้ที่ไม่ระบุตัวตน
quantumized avatar
ng flag
ฉันตัดเมมแคชออก ฉันทดสอบปัญหาในการคัดลอกไซต์บนเซิร์ฟเวอร์อื่นที่ไม่มี Memcached และปัญหายังคงอยู่
Score:5
ธง cn

การตั้งค่าอายุสูงสุดของแคชเป็น 0 จะไม่ทำงานหากคุณยังมีโมดูลหลักอยู่ แคชเพจภายใน เปิดใช้งาน

อ่านเอกสารว่าทำไมคุณอาจต้องการปิดการใช้งานโมดูลนี้หรือส่งบล็อกด้วยวิธีการอื่น:

เว็บไซต์ที่ให้บริการเนื้อหาส่วนบุคคลแก่ผู้ใช้ที่ไม่ระบุตัวตน (ไดนามิก ต่อเซสชัน เช่น ตะกร้าสินค้า) จะต้องการปิดการใช้งานภายใน โมดูลเพจแคช โมดูลนี้ถือว่าหน้าเหมือนกันทั้งหมด ผู้ใช้ที่ไม่ระบุชื่อ เว็บไซต์เหล่านั้นยังสามารถใช้ประโยชน์จาก โมดูล Dynamic Page Cache หรือสามารถทำได้อีกทางหนึ่ง การปรับแต่งโดยใช้ JavaScript + AJAX

https://www.drupal.org/docs/administering-a-drupal-site/internal-page-cache

quantumized avatar
ng flag
ขอขอบคุณ. โมดูล Internal Page Cache เป็นปัญหา

โพสต์คำตอบ

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