webclient / ext-cache
PSR-18 HTTP 客户端缓存扩展
v2.0.0
2022-07-26 14:20 UTC
Requires
- php: ^7.4 || ^8.0
- ext-json: *
- ext-mbstring: *
- psr/http-client: ^1.0
- psr/http-factory: ^1.0
- webclient/cache-contract: ^1.0
Requires (Dev)
- nyholm/psr7: ^1.5
- phpunit/phpunit: ^6.5 || ^7.5 || ^8.5 || ^9.5
- squizlabs/php_codesniffer: ^3.7
- webclient/fake-http-client: ^2.0
Suggests
- psr/http-client-implementation: Choice your favorite psr-18 implementation
- webclient/cache-contract-implementation: Choice your cache implementation
Provides
README
webclient/ext-cache
PSR-18 HTTP 客户端缓存扩展。
安装
安装此包以及您喜欢的 psr-18 实现,psr-17 实现 和 缓存实现。
composer require webclient/ext-cache:^2.0
使用方法
<?php use Psr\Http\Client\ClientInterface; use Psr\Http\Message\RequestInterface; use Psr\Http\Message\ResponseFactoryInterface; use Psr\Http\Message\StreamFactoryInterface; use Webclient\Cache\Contract\CacheInterface; use Webclient\Extension\Cache\Client; use Webclient\Extension\Cache\CacheKeyFactory\CacheKeyFactoryInterface; /** * @var ClientInterface $client Your PSR-18 HTTP Client * @var ResponseFactoryInterface $responseFactory Your PSR-17 response factory * @var StreamFactoryInterface $streamFactory Your PSR-17 stream factory * @var CacheInterface $cache Your cache adapter * @var CacheKeyFactoryInterface|null $cacheKeyFactory key factory for your cache */ $http = new CacheClientDecorator( $client, $responseFactory, $streamFactory, $cache, $cacheKeyFactory, 'X-Private-Cache-Key-Header', // name of the header in which the private cache key is contained 4096, // Maximal response size (with header). null for unlimited. 2147483648 // maximal TTL of cache items ); /** @var RequestInterface $request */ $response = $http->sendRequest($request); /** @var RequestInterface $request */ $response = $http->sendRequest($request); /** * For using private cache add header `X-Private-Cache-Key-Header` (or your configured) to request. * header `X-Private-Cache-Key-Header` (or your configured) do not be sent to original http-client. */ $response = $http->sendRequest($request->withHeader('X-Private-Cache-Key-Header', ['private-key-for-current-user']));
未处理的请求
如果请求包含 If-None-Match
、If-Match
、If-Modified-Since
、If-Unmodified-Since
或 If-Range
标头,则将返回原始响应。
部分请求
不支持部分请求。