我使用CMS Typo3构建了一个网站。一切正常,但我有性能问题。前端生成非常缓慢。所以我决定安装扩展“T3Profiler”来分析问题。
我在Profiler查询中找到了:
SELECT content FROM cf_cache_hash WHERE identifier = 'f33c135b63eac6bb7194edab51f3c57a' AND cf_cache_hash.expires >= 1441015330 LIMIT 1
此类查询需要90.000 - 600.000 ms。为什么选择这么慢?如何解决我的问题?
有人能给我一个暗示吗?
答案 0 :(得分:1)
有时,当sys_log
,*_cache_*
等系统表增长到庞大的大小时,它会导致查询它们变得更慢和更慢......虽然它们经常在常见的渲染过程中被访问,但它们可能会变成真正的表演杀手
有几种解决方法:
sys_log
和历史条目可以在ie之后清除。 30天,特别是当系统处于开发状态并且每天都进行 maaaany 更改时。sys_log
添加几百个日志,即当某些方法没有获得某些预期的参数时 - 如果它在循环中使用并且收集了一百个项目,记录器必须为每个请求写几百次错误(!),修复代码以避免这种情况 答案 1 :(得分:0)
除了@biesior答案之外,另一个提示是将缓存存储在TYPO3数据库之外,因为数据选择已经足够强调数据库。
对于TYPO3 7.x,我在AdditionalConfiguration.php
:
$redisCacheOptions = [
'hostname' => 'localhost',
'port' => 6379,
'database' => 2,
'password' => '******',
];
$cacheConfigurations = [
'cache_hash',
'cache_imagesizes',
'cache_pages',
'cache_pagesection',
'cache_rootline',
'extbase_datamapfactory_datamap',
'extbase_object',
'extbase_reflection',
'extbase_typo3dbbackend_queries',
'extbase_typo3dbbackend_tablecolumns'
];
foreach ($cacheConfigurations as $cacheConfiguration) {
$GLOBALS['TYPO3_CONF_VARS']['SYS']['caching']['cacheConfigurations'][$cacheConfiguration]['backend'] = \TYPO3\CMS\Core\Cache\Backend\RedisBackend::class;
$GLOBALS['TYPO3_CONF_VARS']['SYS']['caching']['cacheConfigurations'][$cacheConfiguration]['options'] =
$redisCacheOptions + (array)$GLOBALS['TYPO3_CONF_VARS']['SYS']['caching']['cacheConfigurations'][$cacheConfiguration]['options'];
}