TYPO3:什么是不同类型的缓存?

时间:2014-12-05 16:55:56

标签: caching typo3

在TYPO3后端,我可以清除不同类型的缓存:前端缓存,常规缓存,系统缓存......此外,还有一些选项可以清除安装工具中的缓存。

在许多情况下,特别是当我开发扩展时,我需要清除缓存以反映我所做的更改。但是,我从来都不知道需要清除哪些缓存,而且大多数时候,我清除每个缓存,直到我在重新加载页面时看到正确的输出。在其他情况下,例如,当我升级TYPO3时,我需要从安装工具中清除缓存,否则它会在旧的安装路径中查找php文件。

可以清除哪种不同的缓存?他们每个人之间有什么区别?每个命令清除哪些文件或数据库项?在这种情况下,每个clear caches命令都是必要的(即在修改哪种文件或信息时)?

3 个答案:

答案 0 :(得分:6)

在TYPO3 6.2和7中:

您可以在后端系统>中看到所有缓存的配置。 SYS.caching.cacheConfiguration部分中的配置。每个缓存都在一个或多个"组":all,system,pages中注册。菜单项反映了这些组:

  • "冲洗前端缓存" (cacheCmd=pages):清除前端和页面相关的缓存。这使得TYPO3重新渲染通常被缓存的内容(除了USER_INT对象之外的所有内容)
  • "刷新一般缓存" (cacheCmd=all):包括前端,以及由clearAllCache_additionalTables扩展注册的一些缓存(即新闻缓存,realurl缓存)。尽管是all包含系统缓存(这就是为什么它被称为"一般缓存"而不是"所有缓存" in菜单)。
  • "刷新系统缓存" (cacheCmd=system):清除"系统相关的缓存",包括类加载器,本地化和扩展配置文件缓存。
  • 安装工具"清除所有缓存":这是一个硬连线"删除所有typo3temp / var / Cache文件"以及所有MySQL缓存表(" cf_ *",即Extbase Reflection)。然后它会遍历所有已注册的缓存并清除它们。

最好是让自己了解代码的哪些部分存储在哪个缓存中,以便您在更改内容时了解要刷新的内容:

  • Extbase中的PHP类将其内容解析为所谓的" Reflection Cache" (即注释)=> 刷新系统缓存
  • 您的扩展程序设置ext_tables.phpext_localconf.phpTCA会缓存在cache_core =>中刷新系统缓存
  • 您的流体模板已编译为PHP代码=> 刷新系统缓存
  • 您的PHP代码可能会被" opcache"缓存。你的PHP。通常opcaches配置为检查文件的修改时间,因此通常在修改PHP文件后不需要刷新任何opcache。在某些情况下可能不是这种情况,或者如果您通过系统时间的符号链接工作未同步,那么您可能需要在PHP代码更改后刷新opcache => 安装工具清除所有缓存
  • 你的TypoScript也被缓存(cache_hash)=> 刷新前端缓存。请注意,如果您在备份中更改TypoScript,则会自动自动刷新这些缓存。
  • 如果您的更改也会影响呈现给前端的缓存输出,则可能还需要刷新前端缓存。为避免这种情况,您可以在TypoScript中设置:config.no_cache = 1

请注意,由于TYPO3 8.1后端菜单和整个系统已经简化,所以我们只剩下:

  • "刷新前端缓存":像以前一样清除前端和页面相关的缓存。
  • "刷新所有缓存":或多或少安装工具以前做过的事情。因此,这将包括所有扩展高速缓存,反射,系统高速缓存。由于它包含" opcache刷新",PHP文件更改也会在此处反映出来。

为了在不关心其中一些缓存的情况下简化开发,您可能希望单独关闭它们并关闭#34;。

$TYPO3_CONF_VARS['SYS']['caching']['cacheConfigurations']['cache_pages']['backend'] = NullBackend::class;
$TYPO3_CONF_VARS['SYS']['caching']['cacheConfigurations']['cache_pagesection']['backend'] = NullBackend::class;
$TYPO3_CONF_VARS['SYS']['caching']['cacheConfigurations']['cache_hash']['backend'] = NullBackend::class;
$TYPO3_CONF_VARS['SYS']['caching']['cacheConfigurations']['extbase_object']['backend'] = NullBackend::class;
$TYPO3_CONF_VARS['SYS']['caching']['cacheConfigurations']['extbase_reflection']['backend'] = NullBackend::class;

请参阅:https://docs.typo3.org/typo3cms/CoreApiReference/ApiOverview/CachingFramework/Configuration/Index.html?highlight=cache#how-to-disable-specific-caches

答案 1 :(得分:1)

一般来说,当记录中的更改(通过编辑)未反映在页面上时,您需要清除前端一般缓存(因为页面是高速缓存)。

系统缓存还可以保留与扩展程序不同的配置(所有这些内容来自ext_tables.phpext_localconf.php,语言文件等),因此您需要在进行更改时清除它在这些文件中......以及向控制器注入示例新存储库时。

提示:有一些浏览器插件在地址栏中显示缓存清除图标(a.k.a.黄色闪存),即:TYPO3 Clear Cache用于Chrome

答案 2 :(得分:0)

因为还没有人提到这些文件: 有很多临时文件可以随时删除,有时必须删除。部分它们甚至包含在BE的缓存清除中。

基础文件夹是/typo3temp/

缓存在/typo3temp/Cache/中完成,分为/typo3temp/Cache/Code//typo3temp/Cache/Data/

这里收集了一些php文件(例如ext_tables.php)

的串联

因为7LTS还有另一个需要手动删除的文件夹:typo3temp/autoload/其中存储了类信息以进行自动加载。特别是如果您开发新的扩展名,则不会在每次编辑时自动清除此文件夹。