andersundsehr/cache-automation

自动添加缓存标签和缓存寿命

安装: 0

依赖项: 0

建议者: 0

安全性: 0

星级: 0

关注者: 2

分支: 0

开放问题: 0

类型:typo3-cms-extension

0.0.1 2024-03-21 17:16 UTC

This package is auto-updated.

Last update: 2024-09-07 07:48:41 UTC


README

TYPO3 有一个很好的缓存系统,能够恰当地在正确的时间移除缓存。但它需要您的帮助才能做到这一点。

通常您需要在代码中添加缓存标签,以告诉 TYPO3 哪些表被您的代码使用。

通过这个扩展,这个过程是自动化的。

安装

composer require andersundsehr/cache-automation

目前仅与 TYPO3 11 LTS (doctrine dbal 2.13) 兼容

详细工作原理

此扩展挂钩到 TYPO3 QueryBuilder。
它修改查询以获取所有必要的信息,以提供最佳的缓存寿命。SQL 查询中的 starttime 条件被移除,因此我们可以获取仍在未来最低的 starttime。也使用 endtime 作为缓存寿命。它能够处理复杂查询,包含多个连接。

它还挂钩到结果对象,以拦截结果并添加缓存标签到页面缓存。 DocrineResult 过滤掉具有未来 starttime 的行,因此返回的行与查询中仍然有 starttime 条件时的行相同。

条件字段

条件字段是任何查询的 WHERE 条件中使用的字段。
将字段添加到缓存标签中可能很有用,以便在字段更改时清除缓存。

待办事项

  • 为度量收集器启用只读模式(从 Aus vector 提取到额外的扩展)
    • VECTOR \AUS\AusProject\Utility\MetricsCollectorUtility::collect
    • VECTOR \AUS\AusProject\Command\MetricsCommand::execute
  • 添加文件操作的缓存清除(替换文件、删除文件等)sys_file_
  • 子查询:至少我们可以为子查询创建 <tablename>-<fieldname> 缓存标签。
  • 禁用 <tablename>-<fieldname> 处理的选项
  • 禁用移除 StartTimeRestriction 的选项
  • 添加 GitHub Actions
  • 添加 TYPO3 12 和 13 兼容性

该过程的局限性

  • 仅与 \TYPO3\CMS\Core\Database\Query\QueryBuilder 一起工作(不与 getConcreteQueryBuilder() \Doctrine\DBAL\Query\QueryBuilder 一起工作)
    • 间接地,它与 Extbases \TYPO3\CMS\Extbase\Persistence\Generic\Query 一起工作,因为该查询使用 \TYPO3\CMS\Core\Database\Query\QueryBuilder
    • 间接地,它与 Doctrine\DBAL\Query\QueryBuilder 一起工作,因为该查询使用 \TYPO3\CMS\Core\Database\Query\QueryBuilder
  • 如果您省略了表的单例 ID(例如,SELECT COUNT(*) FROM ...)则不起作用。(Connection->count() 使用该功能。)
  • 它不知道从数据库中获取的行是否确实对于缓存标签是必要的。
  • 它创建的缓存标签比核心多得多,可能导致数据库溢出。
  • 它不与页面缓存以外的其他缓存一起工作。
    • 可能在未来需要时可以添加。

在正常 TYPO3 缓存处理和每次更改都清除所有缓存之间
它试图尽可能接近始终清除足够缓存但尽可能少的点。

来自 anders und sehr GmbH 的爱心

如果某些事情没有工作 😮
或者您喜欢这个扩展 🥰 让我们知道。

我们正在招聘 https://www.andersundsehr.com/karriere/