基于资源的缓存

编辑本页

警告:您正在浏览的文档欧宝体育电话欧宝娱乐app下载地址Symfony 3.3,现已不再维护。

本页的更新版本用于Sy欧宝娱乐app下载地址mfony 6.2(当前稳定版本)。

基于资源的缓存

当加载所有配置资源时,您可能希望处理配置值并将它们合并到一个文件中。这个文件就像一个缓存。它的内容不必在应用程序每次运行时重新生成——只在配置资源被修改时重新生成。

例如,Symfony Routin欧宝娱乐app下载地址g组件允许您加载所有路由,然后根据这些路由转储URL匹配器或URL生成器。在这种情况下,当其中一个资源被修改时(并且您正在开发环境中工作),生成的文件应该失效并重新生成。这可以通过使用ConfigCache类。

下面的示例向您展示了如何收集资源,然后根据加载的资源生成一些代码,并将这些代码写入缓存。缓存还接收用于生成代码的资源集合。通过查看这些资源的“最后修改”时间戳,缓存可以判断它是否仍然是新的,或者它的内容应该重新生成:

12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
使用欧宝娱乐app下载地址\组件\配置\ConfigCache;使用欧宝娱乐app下载地址\组件\配置\资源\FileResource;cachePath__DIR__“/缓存/ appUserMatcher.php”;//第二个参数表示是否使用调试模式userMatcherCacheConfigCache (cachePath真正的);如果(!userMatcherCache->isFresh ()) {//填充一个users数组。Yml文件路径yamlUserFiles=……;资源数组();foreachyamlUserFiles作为yamlUserFile){//参见文章“加载资源”//知道$delegatingLoader的来源delegatingLoader->负载(yamlUserFile);资源[] =FileResource (yamlUserFile);}// UserMatcher的代码在其他地方生成代码=……;userMatcherCache->写(代码资源);}//你可能需要缓存的代码:需要cachePath;

在调试模式下,a.meta文件将在与缓存文件本身相同的目录中创建。这.meta文件包含序列化的资源,这些资源的时间戳用于确定缓存是否仍然是新的。当不在调试模式时,缓存一旦存在就被认为是“新鲜的”,因此缓存不存在.meta将生成文件。

此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。