jasny / assetic-extensions
Improved caching for Assetic
Installs: 1 630
Dependents: 0
Suggesters: 1
Security: 0
Stars: 0
Watchers: 2
Forks: 0
Open Issues: 0
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
Improved caching for Assetic.
Installation
Jasny's Twig Extensions can be easily installed using composer
composer require jasny/assetic-extensions
Internal caching when using a factory
The AssetCacheWorker
wraps each asset in a asset in an AssetCache
object. This enables the use of asset caching
when using a factory.
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') ));
Versioning assets
The AssetVersionWorker
add a version number to each generated assets. This works well on a production environment,
preventing the need of removing, checking or overwriting the asset files.
If the output file is set to all.css
and version is set to 1.3.7
, the output file will be named 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));
Caching when using Twig
With the example code from the Assetic readme, each template is parsed on each request. This considerably slows down
your application. The TwigCachingFormulaLoader
using Twig cache to store the assetic formulae is finds in each
template. The formula loader uses the cache
and auto_reload
options
of the Twig environment.
The PersistentAssetWriter
is an asset writer with an overwrite
option. When overwrite is disabled, existing assets
are not overwritten. This can speed up your production environment. It's recommended to add a version number in the
output files, either manually or by using the 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);