jasny / assetic-extensions
此包已被废弃且不再维护。未建议替代包。
改进Assetic的缓存
v1.0.0
2017-06-05 18:29 UTC
Requires
- php: >=5.6.0
- kriswallsmith/assetic: ^1.4
Requires (Dev)
- jasny/php-code-quality: ^2.1
- psr/log: ^1.0
- twig/twig: ^1.28 || ^2.0
This package is auto-updated.
Last update: 2024-08-29 20:45:36 UTC
README
改进了Assetic的缓存。
安装
可以使用composer轻松安装Jasny的Twig扩展。
composer require jasny/assetic-extensions
使用工厂时的内部缓存
AssetCacheWorker
将每个资产包装在 AssetCache
对象中。这在使用工厂时允许使用资产缓存。
use Assetic\Factory\AssetFactory; use Jasny\Assetic\AssetCacheWorker; $factory = new AssetFactory('/path/to/asset/directory/'); $factory->setAssetManager($am); $factory->setFilterManager($fm); $factory->addWorker(new AssetCacheWorker( new FilesystemCache('/path/to/cache') ));
资产版本控制
AssetVersionWorker
为每个生成的资产添加版本号。这在生产环境中表现良好,可以防止删除、检查或覆盖资产文件。
如果输出文件设置为 all.css
且版本设置为 1.3.7
,输出文件将被命名为 all-1.3.7.css
。
use Assetic\Factory\AssetFactory; use Jasny\Assetic\AssetVersionWorker; $factory = new AssetFactory('/path/to/asset/directory/'); $factory->setAssetManager($am); $factory->setFilterManager($fm); $factory->addWorker(new AssetVersionWorker($version));
使用Twig时的缓存
根据Assetic的readme中的示例代码,每个模板在每个请求时都会被解析。这会显著减慢您的应用程序。使用 TwigCachingFormulaLoader
可以将Assetic公式存储在Twig缓存中,以在每个模板中找到。公式加载器使用Twig环境的 cache
和 auto_reload
选项。
PersistentAssetWriter
是一个带有 overwrite
选项的资产编写器。当禁用覆盖时,现有资产不会被覆盖。这可以提高您生产环境中的速度。建议在输出文件中添加版本号,无论是手动还是使用 AssetVersionWorker
。
use Jasny\Assetic\PersistentAssetWriter; use Jasny\Assetic\TwigCachingFormulaLoader; use Assetic\Extension\Twig\TwigResource; use Assetic\Factory\LazyAssetManager; $twigLoader = new Twig_Loader_Filesystem('/path/to/views'); $twig = new Twig_Environment($twigLoader, ['cache' => '/path/to/cache', 'auto_reload' => true]); $am = new LazyAssetManager($factory); // enable loading assets from twig templates, caching the formulae $am->setLoader('twig', new TwigCachingFormulaLoader($twig)); // loop through all your templates foreach ($templates as $template) { $resource = new TwigResource($twigLoader, $template); $am->addResource($resource, 'twig'); } $writer = new PersistentAssetWriter('/path/to/web'); $writer->writeManagerAssets($am);