TYPO3中如何进行缓存预热?

4

在另一个问题中,建议通过TypoScript设置cache_clearAtMidnight并进行随后的缓存预热。

我想知道如何进行缓存预热,因为我没有找到执行此操作的计划任务。

(每天清除整个缓存似乎过于频繁,但在任何情况下,缓存预热都是一个好主意。)

3个回答

2
由于我不知道TYPO3是否有内部机制进行缓存预热,因此我基于一个简单的PHP脚本(实际上可以是任何语言 - Python、PHP、Bash等)构建了自己的小型缓存预热器。该脚本读取sitemap.xml并通过cURL请求每个页面
我使用自定义用户代理来将这些请求排除在统计之外。
curl_setopt($ch, CURLOPT_USERAGENT, 'cache warming - TYPO3');

0

我认为看到各种解决方案是很好的。但是t3fetch没有过滤URL的功能。递归wget会按照链接逐步爬取,并且还会获取fileadmin、typo3、typo3conf等文件中的文件。对于预热页面缓存来说,这是不必要的,会增加运行时间(例如在大型网站上)。此外,我认为从一个不使用TYPO3功能的TYPO3扩展运行命令行脚本没有任何优势。 - Sybille Peters
Sybille - 很好地发现了不必要的资源获取!这当然应该得到改进。 无妨,你能告诉我 b13/warmup 是否会预热单个记录视图 - 还是只有页面?对于爬虫,您需要将其配置为按单个记录视图进行爬取,有时当单个记录的 URL 复杂时,很难配置爬虫扩展。 - Krystian Szymukowicz
我目前正在使用wget。我知道还有其他的解决方案,但我没有真正用它们进行缓存预热。我现在无法回答你的问题。我将更深入地研究一些这样的解决方案。如果我发现有趣的东西,我会更新我的答案。 - Sybille Peters
对于wget,我还使用-t1(仅重试一次)并排除一些目录,例如-X“fileadmin,typo3,typo3conf,typo3temp,uploads”和--spider等。 - Sybille Peters

0

有一些可用的扩展来进行缓存预热:

此外,Benni Mack 最近发布了关于 TYPO3 缓存的博客文章(第一部分):

总的来说,还有很多需要考虑的事情,例如更改缓存持续时间、优化页面加载速度等。

顺便说一下,cache_clearAtMidnight 并不是在午夜清除缓存,而是将过期时间设置为午夜。一旦缓存过期,在下一个页面访问时,它将被重新生成。具有相同的效果,但这也是需要知道的。


Sybille,请问b13/warmup会启动单个记录的查看,还是只有页面?对于爬虫,您需要额外配置以按单个记录的视图进行爬取,并且有时当单个记录的url很复杂时,配置爬虫扩展非常困难。 - Krystian Szymukowicz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接