性能与缓存¶
该库需要解析大量信息才能处理所有提供的功能。因此,强烈建议激活缓存以减少运行时之间的繁重工作负载,特别是当应用程序在生产环境中运行时。
该库提供了开箱即用的缓存实现,它将缓存条目保存到文件系统中。
当应用程序在开发环境中运行时,缓存实现应使用FileWatchingCache进行修饰,它将监视应用程序的文件,并在开发人员修改 PHP 文件时使缓存条目失效,从而防止库在属性或方法的签名更改时无法按预期运行。
映射器构建器和规范化器构建器可以使用相同的缓存实例。
$cache = new \CuyZ\Valinor\Cache\FileSystemCache('path/to/cache-directory');
if ($isApplicationInDevelopmentEnvironment) {
$cache = new \CuyZ\Valinor\Cache\FileWatchingCache($cache);
}
(new \CuyZ\Valinor\MapperBuilder())
->withCache($cache)
->mapper()
->map(SomeClass::class, [/* … */]);
(new \CuyZ\Valinor\NormalizerBuilder())
->withCache($cache)
->normalizer(\CuyZ\Valinor\Normalizer\Format::json())
->normalize($someData);
预热缓存¶
缓存可以被预热,例如在应用程序的构建和部署期间在管道中。
注意
必须先注册缓存,否则预热将毫无用处。
$cache = new \CuyZ\Valinor\Cache\FileSystemCache('path/to/cache-dir');
$mapperBuilder = (new \CuyZ\Valinor\MapperBuilder())->withCache($cache);
// During the build:
$mapperBuilder->warmupCacheFor(SomeClass::class, SomeOtherClass::class);
// In the application:
$mapperBuilder->mapper()->map(SomeClass::class, [/* … */]);