A HTTP Cache for Guzzle 6. It's a simple Middleware to be added in the HandlerStack. This project is under development but it's already functional.
- RFC 7234 compliance
- Performance and transparency
- Assured compatibility with PSR-7
composer require kevinrob/guzzle-cache-middleware:~0.5
or add it the your composer.json
and make a composer update kevinrob/guzzle-cache-middleware
.
- Currently it depends on and works only with Doctrine\Cache as the actual caching backend. (#27)
Performance. It's very common to do some HTTP calls to an API for rendering a page and it takes times to do it.
With a simple Middleware added at the top of the HandlerStack
of Guzzle6.
use GuzzleHttp\Client;
use GuzzleHttp\HandlerStack;
use Kevinrob\GuzzleCache\CacheMiddleware;
// Create default HandlerStack
$stack = HandlerStack::create();
// Add this middleware to the top with `push`
$stack->push(new CacheMiddleware(), 'cache');
// Initialize the client with the handler option
$client = new Client(['handler' => $stack]);
You can use a custom Cache with:
[...]
use Doctrine\Common\Cache;
[...]
$stack->push(new CacheMiddleware(new PrivateCache(new FilesystemCache('/tmp/'))), 'cache');
You can use ChainCache
for using multiple CacheProvider
. With that provider, you have to sort the different cache from the faster to the slower. Like that, you can have a very fast cache.
[...]
use Doctrine\Common\Cache;
[...]
$stack->push(new CacheMiddleware(
new PrivateCache(
new ChainCache([
new ArrayCache(),
new ApcCache(),
new FileCache('/tmp/'),
])
)
), 'cache');