middlewares/cache
Middleware components with the following cache utilities:
Requirements
- PHP >= 7.2
- A PSR-7 http library
- A PSR-15 middleware dispatcher
Installation
This package is installable and autoloadable via Composer as middlewares/cache.
composer require middlewares/cache
CachePrevention
To add the response headers for cache prevention. Useful in development environments:
Dispatcher::run([
new Middlewares\CachePrevention()
]);
Expires
This middleware adds the Expires
and Cache-Control: max-age
headers to the response. You can configure the cache duration for each mimetype. If it's not defined, use the defaults.
// Use the default configuration
$expires = new Middlewares\Expires();
// Custom durations
$expires = new Middlewares\Expires([
'text/css' => '+1 year',
'text/js' => '+1 week',
]);
defaultExpires
Set the default expires value if the request mimetype is not configured. By default is 1 month. Example:
//set 1 year lifetime to css and js
$durations = [
'text/css' => '+1 year',
'text/javascript' => '+1 year',
];
//and 1 hour to everything else
$default = '+1 hour';
$expires = (new Middlewares\Expires($durations))->defaultExpires($default);
Cache
Saves the response headers in a PSR-6 cache pool and returns 304
responses (Not modified) if the response is still valid. This saves server resources and bandwidth because the body is returned empty. It's recomended to combine it with Expires
to set the lifetime of the responses.
$cachePool = new Psr6CachePool();
Dispatcher::run([
new Middlewares\Cache($cachePool),
new Middlewares\Expires()
]);
Optionally, you can provide a Psr\Http\Message\ResponseFactoryInterface
as the second argument to create the 304
empty responses. If it's not defined, Middleware\Utils\Factory will be used to detect it automatically.
$cachePool = new Psr6CachePool();
$responseFactory = new MyOwnResponseFactory();
$cache = new Middlewares\Cache($cachePool, $responseFactory);
ClearSiteData
Send the header Clear-Site-Data
to remove all site data in the client (cache, cookies, storage etc)
Dispatcher::run([
new Middlewares\ClearSiteData()
]);
Optionally, you can provide the list of data types that you want to clear.
$cache = new Middlewares\ClearSiteData('cache', 'cookies');
Please see CHANGELOG for more information about recent changes and CONTRIBUTING for contributing details.
The MIT License (MIT). Please see LICENSE for more information.