juliangut/cacheware

PSR7 cache headers management middleware

1.1 2016-09-16 15:16 UTC

This package is auto-updated.

Last update: 2024-10-15 11:22:13 UTC


README

PHP version Latest Version License

Build status Style Code Quality Code Coverage Total Downloads

CacheWare

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.

Installation

Composer

composer require juliangut/cacheware

Usage

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();

Config

$cacheMiddleware = new CacheWare([
  'limiter' => null
  'expire' => 180,
]);

limiter

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.

expire

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.

Contributing

Found a bug or have a feature request? Please open a new issue. Have a look at existing issues before.

See file CONTRIBUTING.md

License

See file LICENSE included with the source code for a copy of the license terms.