brightfish / caching-guzzle
通过Guzzle中间件缓存HTTP响应
1.3.3
2023-05-04 10:15 UTC
Requires
- php: ^7.1|^8.0
- guzzlehttp/guzzle: ^6.3|^7.0
- psr/simple-cache: ^1
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.16
- phpunit/phpunit: ^9.6
README
为Guzzle提供简单透明的HTTP响应缓存中间件,与Laravel或任何实现PSR-16缓存接口的缓存库兼容。
安装
您可以使用Composer安装此库:composer require brightfish/caching-guzzle
如何使用
中间件的注册遵循Guzzle的文档
/** @var \Psr\SimpleCache\CacheInterface $cache */ $cache = app('cache')->store('database'); // Laravel example, but any PSR-16 cache will do $middleware = new \Brightfish\CachingGuzzle\Middleware($cache); $stack = \GuzzleHttp\HandlerStack::create(); $stack->push($middleware); $client = new \GuzzleHttp\Client([ 'handler' => $stack, 'base_uri' => 'https://example.org/api/' ]);
实例化参数
除了PSR-16兼容的缓存外,中间件还接受两个可选参数
$ttl,默认缓存持续时间,可以由每个请求覆盖$log,指示包将缓存命中记录到Laravel的日志或PHP的默认error_log(参见源代码)。
$middleware = new \Brightfish\CachingGuzzle\Middleware($store, $ttl = 60, $log = true);
发送请求
可用选项
示例:缓存响应90秒(默认:60)
$response_1 = $guzzleClient->get('resource', [ 'cache_ttl' => 90 ]);
示例:重新请求并更新缓存
$response_3 = $guzzleClient->post('resource/84', [ 'cache_anew' => true ]);
示例:禁用缓存
$response_2 = $guzzleClient->post('resource/84', [ 'cache' => false ]);
示例:使用自定义键永久缓存
$response_4 = $guzzleClient->post('resource/84', [ 'cache_key' => 'my-key', 'cache_ttl' => -1 ]);
如果将cache_ttl设置为0,则不会缓存响应,但与'cache' => false不同,它可能从中检索。
示例:缓存检索
# Get response_1 from cache. $cached_response_1 = $cache->get('//example.org/api/resource'); # Get response_4 from cache. $cached_response_4 = $cache->get('my-key');
使用包装器
除了手动配置Guzzle客户端和缓存中间件之外,还可以实例化此包提供的Client类。这样,中间件的绑定就由您完成了。
use Brightfish\CachingGuzzle\Client; /** @var \Psr\SimpleCache\CacheInterface $store */ $psrCompatibleCache = new Cache(); $client = new Client($psrCompatibleCache, [ 'cache_ttl' => 60, // default cache duration 'cache_log' => false, // log the cache hits // Guzzle options: 'base_uri' => 'https://example.org/api/' // ... ]);
贡献
请参阅CONTRIBUTING以获取详细信息。
安全漏洞
请查看我们如何报告安全漏洞的安全策略。
致谢
许可证
GNU通用公共许可证(GPL)。有关更多信息,请参阅许可证文件。