wieni / wmpage_cache
为匿名用户缓存页面,比默认页面缓存模块具有更高的可定制性
Requires
- php: >=7.1
- drupal/core: ^9 || ^10
Requires (Dev)
- composer-runtime-api: ^2.0
- drush/drush: ^10.0
- ergebnis/composer-normalize: ^2.0
- wieni/wmcodestyle: ^1.3
This package is auto-updated.
Last update: 2024-09-07 11:55:30 UTC
README
为匿名用户缓存页面,比默认页面缓存模块具有更高的可定制性。
为什么?
- 提供比默认页面缓存模块更多的可配置选项
- 允许您在多个缓存存储(数据库、Redis、Flysystem)和缓存失效器/清除器(默认、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 文件。