A PSR7 cache headers management middleware.
This middleware must be run before session_start
has been called so it can prevent PHP session mechanism from automatically send any kind of header to the client (including session cookie and caching).
You can use this middleware with juliangut/sessionware which will automatically handle session management.
composer require juliangut/cacheware
require 'vendor/autoload.php';
use \Jgut\Middleware\CacheWare
$configuration = [
'limiter' => 'private',
'expire' => 1800, // 30 minutes
];
$cacheMiddleware = new CacheWare($configuration);
// Get $request and $response from PSR7 implementation
$request = new Request();
$response = new Response();
$response = $cacheMiddleware($request, $response, function() { });
// Response has corresponding cache headers for private cache
Integrated on a Middleware workflow:
require 'vendor/autoload.php';
use \Jgut\Middleware\CacheWare
$app = new \YourMiddlewareAwareApplication();
$app->addMiddleware(new CacheWare(['limiter' => 'nocache']));
$app->run();
$cacheMiddleware = new CacheWare([
'limiter' => null
'expire' => 180,
]);
Selects cache limiter type. It's values can be public
, private
, private_no_expire
or nocache
. If not provided value defined in ini_set session.cache_limiter
will be automatically used (normally 'nocache').
Cacheware class has CACHE_* constants for convenience.
If you want to completely disable cache headers give limiter a value of null
.
Sets the time in seconds for caching. If not provided value defined in ini_set session.cache_expire
will be automatically used (normally 180). This setting is ignore when using nocache
limiter.
Found a bug or have a feature request? Please open a new issue. Have a look at existing issues before.
See file CONTRIBUTING.md
See file LICENSE included with the source code for a copy of the license terms.