首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >显示IP地址的Drupal 8自定义块模块的缓存问题

问显示IP地址的Drupal 8自定义块模块的缓存问题
EN

Stack Overflow用户
提问于 2017-01-13 05:54:10
回答 1查看 271关注 0票数 2

我已经创建了一个简单的自定义区块模块,用于显示访问网站的用户的IP地址。当网站有访问者时,该访问者会看到他们自己的IP地址显示在区块中。我不需要存储此信息或将其用于任何其他目的,这只是出于美学目的,因此只需要块插件。该模块工作正常并显示IP,但是,它是缓存的,并且IP不会更新,除非我手动访问性能页面并清除站点缓存。我如何覆盖它,让访问者看到他们当前的IP地址?

下面是我的自定义块模块文件:

代码语言:javascript
复制
<?php

namespace Drupal\tester\Plugin\Block;
use Drupal\Core\Block\BlockBase;
use Symfony\Component\HttpFoundation\Request;

class newid extends BlockBase {

/**
   * {@inheritdoc}
   */
  public function build() {
    $request = \Drupal::request()->getClientIp();
    return array('#markup' => $request);
  }
}
EN

回答 1

Stack Overflow用户

发布于 2021-03-18 10:44:42

可以将缓存上下文添加到渲染数组中。有一个IP Cache Context。要使用的ID仅为ip。

试试这个:

代码语言:javascript
复制
<?php

namespace Drupal\tester\Plugin\Block;
use Drupal\Core\Block\BlockBase;
use Symfony\Component\HttpFoundation\Request;

class newid extends BlockBase {

  /**
   * {@inheritdoc}
   */
  public function build() {
    $request = \Drupal::request()->getClientIp();
    return [
      '#markup' => $request,
      '#cache' => [
        'contexts' => [
          'ip',
        ],
      ],
    ];
  }
  
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41623654

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档