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

Cha*_*net 1 caching typo3

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

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

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

Ern*_*hny 7

在TYPO3 6.2和7中:

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

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

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

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

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

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

为了便于开发而不关心其中一些缓存,您可能希望将它们单独"关闭".

$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;
Run Code Online (Sandbox Code Playgroud)

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