У меня есть страница, выполняющая некоторые запросы REST с использованием Guzzle 6. Она отлично работает, однако иногда она замедляется, потому что она всегда делает запросы. Я узнал, что есть guzzle-cache-middleware, который должен кэшировать ответы удаленного API.PHP: Guzzle 6 + Guzzle-cache-middleware
Однако я не могу заставить его работать, мой код следует что-то вроде:
use GuzzleHttp\Client;
use GuzzleHttp\HandlerStack;
use League\Flysystem\Adapter\Local;
use Kevinrob\GuzzleCache\CacheMiddleware;
use Kevinrob\GuzzleCache\Strategy\PrivateCacheStrategy;
use Kevinrob\GuzzleCache\Storage\FlysystemStorage;
(...)
$stack = HandlerStack::create();
$stack->push(
new CacheMiddleware(
new PrivateCacheStrategy(
new FlysystemStorage(
new Local("/tmp/sitex")
)
)
),
"cache"
);
// Request
$client = new Client([
"handler" => $stack,
"base_uri" => "http://...,
"timeout" => 2.0,
]);
$response = $client->request("GET", "/posts", [
(...)
После запуска кода я не получаю никаких ошибок или предупреждений. Guzzle все равно дает мне ответ API, но ничего нового не появляется в /tmp/sitex
.
Должен ли я установить что-либо после запроса для кэширования ответа? Существуют ли такие варианты, как установка TTL ответов?
Документация не объясняет ничего из этого, поэтому, если кто-то, кто испытал на Гузлле, может мне помочь, было бы хорошо. :)
Я обнаружил, что использование PublicCacheStrategy это лучше для сервера кэширования ответов, которые реализуют соответствующие заголовки кэша –