brightfish/caching-guzzle

通过Guzzle中间件缓存HTTP响应

1.3.3 2023-05-04 10:15 UTC

This package is auto-updated.

Last update: 2024-09-09 10:02:24 UTC


README

Tests Latest Version on Packagist Downloads

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)。有关更多信息,请参阅许可证文件