当前位置: 首页 > 知识库问答 >
问题:

每当在Drupal 8的正式生产环境中编辑内容类型(通过编码)时,清除“渲染缓存”

壤驷棋
2023-03-14

在Drupal 8中,当我编辑分类术语中使用的内容类型,而分类术语又在另一个节点(页面)中使用时,除非我手动清除“渲染缓存”,否则更改不会反映在页面上。

每当我通过编码修改节点时,我想实现清除缓存(全部/特定)。但问题是twig不接受PHP代码。我洗耳恭听,如果有人对这个问题有什么建议(最好有一些代码)!

共有2个答案

相俊迈
2023-03-14

Drupal默认缓存每个页面。为了避免在开发过程中出现这种情况,您需要设置开发环境。您可以按照以下步骤操作:

>

  • 编辑您的设置。php文件。

    您的网站/默认/settings.php文件底部的代码应该如下所示:

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

    创建设置。地方的sites/default文件夹中的php文件

    复制复制站点/example.settings.local.php到站点/默认/settings.local.php

    修改调试配置

    看看站点/默认/settings.local.php中的变量,具体来说:取消注释这些行。

    # disable the CSS and JavaScript aggregation features
    $config['system.performance']['css']['preprocess'] = FALSE;
    $config['system.performance']['js']['preprocess'] = FALSE;
    
    # disable the render cache
    $settings['cache']['bins']['render'] = 'cache.backend.null';
    
    # Disable Dynamic Page Cache.
    $settings['cache']['bins']['dynamic_page_cache'] = 'cache.backend.null';
    

    添加此行可在未登录时禁用缓存。

    $settings['cache']['bins']['page'] = 'cache.backend.null';
    

    启用细枝调试选项

    创建一个文件开发。服务。yml在站点文件夹中。要启用Twig调试,请将以下代码复制并粘贴到其中并保存。

    parameters:
      http.response.debug_cacheability_headers: true
        twig.config:
          debug: true
          auto_reload: true
          cache: false  
      services:
        cache.backend.null:
          class: Drupal\Core\Cache\NullBackendFactory
    

  • 孙经艺
    2023-03-14

    要在编辑节点/分类法/块实体后清除特定类型的缓存,我们可以实现hook\u form\u node\u form\u alter()或hook\u form\u taxonomy\u term\u form\u alter()或通常的hook\u form\u alter()。我们可以使用特定的表单id或其他方式清除内部缓存。以下是具有特定节点类型编辑表单的节点的示例:

    function myModule_form_node_form_alter(&$form, FormStateInterface $form_state, $form_id) {
      foreach (array_keys($form['actions']) as $action) {
        if ($action != 'preview' && isset($form['actions'][$action]['#type']) && $form['actions'][$action]['#type'] === 'submit' && ($form_id == 'myNode_edit_form') {
          $form['actions'][$action]['#submit'][] = 'cache_form_submit_node';
        }
      }
    }
    
    function cache_form_submit_node($form, FormStateInterface $form_state) {
      drupal_flush_all_caches();  //To clear all cache or
    
      $renderCache = \Drupal::service('cache.render');
      $renderCache->invalidateAll(); 
    }
    
     类似资料:
    • 我正在使用axios@0.21.1我想验证响应头。我无法从GET响应验证标题“内容类型”和“内容编码”。 “内容类型”:无论我在请求中传递什么内容类型,响应中的内容类型始终是application/JSON。示例代码段: 当我检查回复时。我看到内容类型显示为“application/json”,而不是自定义类型。但当我在《邮递员》中点击相同的url时,我可以看到内容类型和预期的一样。 任何帮助都是

    • 问题内容: 使用什么是能够编辑内容的最佳方法? 在我理想的情况下, 添加的 生日将是一个超链接,点击该链接将显示一个编辑表单-与带有更新按钮的当前添加表单相同。 实时预览(插播) HTML: App.js: 问题答案: 您应该将表单放在每个节点内,分别使用和启用和禁用编辑。像这样: 这里的关键点是: 我已将控件更改为本地范围 已添加到,因此我们可以在编辑时显示它 添加了带有的,以便在编辑时隐藏内容

    • 在快速上手教程中,我们介绍了在 资源管理器 中双击脚本文件打开代码编辑器快速编辑代码的方法。但编辑器内置的代码编辑器功能并不完善,只适合快速浏览和做少量编辑的需要。对程序员来说,我们需要更成熟完善的代码编辑环境。 Visual Studio Code Visual Studio Code (以下简称 VS Code)是微软新推出的轻量化跨平台 IDE,支持 Windows、Mac、Linux 平台

    • 使用步骤 下载 小程序内容渲染包 wxParser 把 wxParser 目录放到小程序项目的根目录下 在需要富文本解析的的 WXML 内引入 wxParser/index.wxml 在页面 JS 文件内使用 wxParser.parse(options) 方法解析 HTML 内容 在需要展示富文本内容的页面的 wxss 文件内引入 wxParser 的默认样式库 wxParser/index.w

    • 问题内容: 我们希望在生产部署中缓存崩溃,但不要浪费大量时间来弄清楚这样做的系统。我的想法是将具有当前版本号的paras应用于css和js文件的末尾: 两个问题:这会有效地打破缓存吗?由于参数表明这是动态内容,因此该参数会导致浏览器从不缓存该URL的响应吗? 问题答案: 参数表示查询字符串,因此浏览器将认为这是从到的新路径。因此导致它从文件而不是从缓存加载。如你所愿。 而且,浏览器将假定下次调用时

    • 我的示例Jersey客户端代码是 我一直在尝试这个代码变体,从上一个星期以来,它是不工作的。在这方面的任何帮助都是高度赞赏的。