bmack/local-caches

为TYPO3提供基于SQLite的自定义缓存后端

0.0.1 2023-01-31 11:15 UTC

This package is auto-updated.

Last update: 2024-08-29 05:44:40 UTC


README

为TYPO3提供缓存后端,将所有缓存信息存储在SQLite中。

另一个侧项目...

为什么这个包?

TYPO3自带“数据库缓存后端”,用于存储页面缓存的版本、页树等信息,最终将大量代码与实际内容存储在同一数据库中,通常是MySQL/MariaDB。典型的缓存页面仍然需要数据库进行少量查询,以及“数据库缓存”中的数十次检查。

然而,当数据库系统存储在单独的内部服务器(即“数据库服务器”)上时(这是99.999%的共享主机提供商的情况),网络延迟(即数据通过局域网电缆传输的时间)会增加,这是很自然的事情。然后有几个人开始尝试使用基于文件系统的缓存,这也由TYPO3默认提供,但不用于典型的页面缓存。当有数百个缓存条目(这可能会很快发生)时,您的文件系统和实际硬盘(SSD,请)需要非常出色。

这个包试图将两者的优点结合起来

从TYPO3 v9开始,TYPO3支持SQLite。SQLite可以用作数据库,但所有信息都存储在一个单独的文件中,理想情况下这个文件在项目所在的服务器上。尽管它的名字叫“Lite”,但它是一个功能齐全的RDBMS,非常适合我们的需求,而且它非常快。

这个包背后的主要思想是提供一个SQLite缓存后端,它会自动处理创建数据库模式和SQLite文件。如果文件被删除(通过部署或意外删除),模式将被重新创建。

在b13.com工作期间,我们仅在我们的项目中使用基于内存的缓存后端,如Redis,我构建了这个小包来演示即使是小的TYPO3项目也可以从优化的缓存后端中受益。也许这个包甚至会被维护者认为是值得的,从而被纳入TYPO3。

安装

您需要TYPO3 v9.3或更高版本才能使用此功能。此外,请确保已激活“php-sqlite”包,这样就完成了。

使用composer安装此包 composer req bmack/local-caches

配置

SQLite数据库文件

安装后,编辑您的AdditionalConfiguration.php以定义使用SQLite缓存后端。以下是TYPO3 v10+的示例:

$caches = [
    'hash',
    'pages',
    'pagesection',
    'rootline',
    'extbase',
];

foreach ($caches as $cacheName) {
    $GLOBALS['TYPO3_CONF_VARS']['SYS']['caching']['cacheConfigurations'][$cacheName]['backend'] = \Bmack\LocalCaches\SqliteCacheBackend::class;
}

侧注

  • 我已经在几个较小的网站上使用了这个包,它“有点工作”
  • 如果不存在,它会创建DB文件和DB结构,也许有更好的方法来做这件事
  • 我使用类似的方法在b13.com的生产环境中使用了一段时间,通过分析我发现,使用完全缓存的页面比使用Redis更快。我可能需要再次尝试并展示一些统计数据。

许可证

本包根据GPL v2+授权,与TYPO3核心相同。有关详细信息,请参阅此存储库中的LICENSE文件。

开放问题

如果您发现任何问题,请随时在GitHub上创建一个问题或拉取请求。

鸣谢

这个包由Benni Mack于2023年为b13 GmbH创建。

灵感来源于来自工程展示播客的Andy Grunwald和Wolfgang Gassler。

了解更多我们开发的TYPO3扩展,这些扩展有助于我们在客户项目中提供价值。作为我们工作方式的一部分,我们注重测试和最佳实践,以确保所有代码的长期性能、可靠性和结果。