weakbit / lucene-cache
为TYPO3提供缓存后端,将所有缓存信息存储在Lucene中
Requires
- php: ~8.1.0 || ~8.2.0 || ~8.3.0
- typo3/cms-core: ~11.5.0 || ~12.4.0
- zf1s/zend-search-lucene: ^1.15.5
Requires (Dev)
- nimut/testing-framework: ^6.0.1
- phpstan/extension-installer: ^1.1
- pluswerk/grumphp-config: ^6.8.0
- rybakit/msgpack: *
- saschaegerer/phpstan-typo3: ^1.1
- ssch/typo3-rector: ^1.1.3
- typo3/cms-adminpanel: ^11.0 || ^12.0
Suggests
- rybakit/msgpack: To get a smaller and faster serialization of data
This package is not auto-updated.
Last update: 2024-09-16 11:46:40 UTC
README
为TYPO3提供缓存后端,将所有缓存信息存储在Lucene。
lucene-cache for TYPO3的关键特性
- 高效缓存:利用Lucene的索引和搜索功能快速存储和检索缓存内容。
- 可扩展性:可以处理大量数据,在高负载下表现良好,适合大型TYPO3安装。
- 灵活性:提供灵活的配置选项,以满足特定需求。
- 集成:无缝集成到TYPO3的缓存框架中,允许在TYPO3项目中轻松设置和使用。
安装和配置
要在您的TYPO3项目中使用lucene-cache后端,请按照以下步骤操作
安装扩展
您可以通过Composer安装lucene-cache扩展
composer require andersundsehr/lucene-cache
配置缓存后端
在您的TYPO3配置中,通常在LocalConfiguration.php或AdditionalConfiguration.php,additional.php,settings.php或ext_localconf.php中,您需要配置缓存后端以使用Lucene。以下是一个示例配置
$GLOBALS['TYPO3_CONF_VARS']['SYS']['caching']['cacheConfigurations']['pages'] = [ 'frontend' => \TYPO3\CMS\Core\Cache\Frontend\VariableFrontend::class, 'backend' => \Weakbit\LuceneCache\Cache\Backend\LuceneCacheBackend::class, 'options' => [ 'defaultLifetime' => 604800, 'indexName' => 'pages', 'maxBufferedDocs' => 1000, ], 'groups' => [ 'pages', ] ];
示例用法
配置lucene-cache后端后,TYPO3将使用Lucene对您指定的页面或其他缓存配置进行缓存。您可以通过检查指定的索引路径中的Lucene索引文件和监控TYPO3安装的性能改进来验证缓存行为。
更多资源
Lucene-cache GitHub仓库 TYPO3缓存框架文档
这些资源提供了全面的文档和示例,以帮助您开始使用lucene-cache后端。
缓存示例配置
$GLOBALS['TYPO3_CONF_VARS']['SYS']['caching']['cacheConfigurations']['pages'] = [ 'frontend' => \TYPO3\CMS\Core\Cache\Frontend\VariableFrontend::class, 'backend' => \Weakbit\LuceneCache\Cache\Backend\LuceneCacheBackend::class, 'options' => [ 'defaultLifetime' => 604800, 'indexName' => 'pages', 'maxBufferedDocs' => 1000, ], 'groups' => [ 'pages', ] ];
选项"indexName"不得包含以下以外的字符:a-zA-Z0-9-_
性能
开发此缓存的问题是使用了非常多的缓存标签。
maxBufferedDocs设置为1000,这意味着在写入之前最多有1000个文档被缓冲,这对于有额外RAM的大型导入来说是个好选择。但请记住,查找(has、get、remove、flush)操作将始终首先提交缓冲区,以便有一个完整的索引来搜索。
请注意
此扩展依赖于使用SingleSpaceTokenizer与lucene包,所以如果您已经在项目中使用lucene,您的分词器将被覆盖,这可能会导致问题。这是我们正在努力解决的问题
考虑事项
在示例中
'frontend' => \TYPO3\CMS\Core\Cache\Frontend\VariableFrontend::class,
设置,这是默认前端。此扩展包含dropin替换
'frontend' => \Weakbit\LuceneCache\Cache\Frontend\VariableFrontend::class,
如果已安装igbinary,则使用igbinary,如果已安装msgpack,则使用msgpack。这些在性能上有所改进,但您也可以选择默认前端。
待办事项
- 实现指标(命中/未命中/插入/删除)
此扩展受Benni Mack的https://github.com/bmack/local-caches的启发