三月 5, 2019 | 後端和Drupal

【D8 教學】如何關閉特定區塊Cache

在開發網站的時候,我們會使用開發模式來關閉快取Cache來方便開發,但是上了正式環境後,往往也因為特定的需求,會需要關閉特定頁面、區塊的快取Cache。這篇文章主要是教學如何有效關閉區塊的快取。

前言

在開發網站的時候,我們會使用開發模式來關閉快取Cache來方便開發,但是上了正式環境後,往往也因為特定的需求,會需要關閉特定頁面、區塊的快取Cache。這篇文章主要是教學如何有效關閉區塊的快取。

關閉區塊快取步驟

  1. 進入Theme資料夾 進入你的客製化theme資料夾,以Drupal-composer專案,並且客製化的theme名稱是bootstrap_sass來說路徑就是

    web/themes/custom/bootstrap_sass

  2. 找到.theme檔案 到了D8以後,本來在D7的template.php檔案換成了.theme檔案,以範例來說就是 bootstrap_sass.theme

  3. 加入以下程式碼 由於我這裡的Theme名稱是bootstrap_sass,所以直接把Hook的名稱換成即可,搭配對應的your-block-id即可把快取關閉囉。

/**
 * Implements hook_preprocess_HOOK() for block.html.twig.
 */
function bootstrap_sass_preprocess_block(&$vars) {

  if($vars["attributes"]["id"] == "your-block-id") {
    $vars['#cache']['max-age'] = 0;
  }
}
  1. 清除快取 當你都做完畢之後,將網站的快取清除,重新Loading之後,網站的特定區塊快取就會被關閉囉,大功告成 :)

結論

D8的快取個人是覺得做的比D7還要更強大了,但是另外一個角度來說,就是太強了,所以讓客人在操作的過程當中,常常會發生內容改了,但是網頁上呈現的結果沒有更改的情況,這個時候就會需要用這種方法來處理囉,分享給需要用到的人。