wieni/wmpage_cache

为匿名用户缓存页面,比默认页面缓存模块具有更高的可定制性

安装量: 1,985

依赖关系: 2

建议者: 0

安全性: 0

星级: 0

关注者: 4

分支: 1

开放问题: 4

类型:drupal-module

1.0.0 2024-01-07 10:16 UTC

README

Latest Stable Version Total Downloads License

为匿名用户缓存页面,比默认页面缓存模块具有更高的可定制性。

为什么?

  • 提供比默认页面缓存模块更多的可配置选项
  • 允许您在多个缓存存储(数据库、RedisFlysystem)和缓存失效器/清除器(默认、Cloudfront)之间进行选择

安装

此软件包需要PHP 7.1和Drupal 8或更高版本。可以使用Composer进行安装

 composer require wieni/wmpage_cache

为防止在创建自定义控制器时出现不必要的早期渲染问题,应包含以下问题的补丁

#2638686: EarlyRenderingControllerWrapperSubscriber中的异常是DX噩梦,移除它

它如何工作?

配置模块

可以通过容器参数更改设置。请参阅wmpage_cache.services.yml以获取设置列表、它们的功能及其默认值。

关于缓存性元数据

就像内部页面缓存动态页面缓存核心模块一样,此模块使用缓存性元数据(缓存标签、缓存上下文和max-age)来确定请求的缓存性,并确保在必要时使缓存的页面失效。

从控制器添加缓存性元数据

您可以在控制器中返回许多不同的事物,并且缓存性元数据可以包含在几乎每一个中。

渲染数组

缓存性元数据可以包含在渲染数组中的#cache键下。有关更多信息,请参阅官方文档

响应对象

可缓存的Response对象必须实现CacheableResponseInterface并可以使用CacheableResponseTrait。有关更多信息,请参阅官方文档

wmcontroller ViewBuilder

当渲染Twig模板时,例如使用wmcontroller ViewBuilder,将自动包含传递给模板的所有参数的缓存性元数据。

从Twig扩展添加缓存性元数据

如果Twig扩展返回的信息将在不通过Drupal渲染系统的情况下用于Twig模板,则任何缓存性元数据都将丢失。这就是为什么最好在Twig扩展的逻辑中分发缓存性元数据。您可以这样做,通过将元数据附加到空的渲染数组并将其渲染出来。

$build = [];
(new CacheableMetadata())
    ->addCacheableDependency($entity)
    ->applyTo($build);

$this->renderer->render($build);

如果此Twig扩展经常被调用,这可能会影响性能。另一个选项是在页面渲染结束时收集所有元数据,并在hook_page_attachments实现中一次性附加。

变更日志

此项目的所有重大更改都将记录在CHANGELOG文件中。

安全性

如果您发现任何安全相关的问题,请通过电子邮件发送至 security@wieni.be,而不是使用问题跟踪器。

许可证

在MIT许可证下分发。有关更多信息,请参阅 LICENSE 文件。