Mam stronę robiącą kilka zapytań REST używając Guzzle 6. Działa to dobrze, ale czasami robi się wolniej, ponieważ zawsze robi zapytania. Dowiedziałem się, że istnieje guzzle-cache-middleware, który ma buforować odpowiedzi ze zdalnego interfejsu API.PHP: Guzzle 6 + Guzzle-cache-middleware
Jednak nie mogę zmusić go do pracy, mój kod następuje coś takiego:
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", [
(...)
Po uruchomieniu kodu nie dostanę jakieś błędy lub ostrzeżenia. Guzzle nadal daje mi odpowiedź API, jednak nic nowego nie pojawia się w /tmp/sitex
.
Czy muszę ustawić cokolwiek po żądaniu buforowania odpowiedzi? Czy istnieją opcje, takie jak ustawienie TTL odpowiedzi?
Ta dokumentacja nie wyjaśnia tego, więc jeśli ktoś doświadczony w Guzzle może mi pomóc, byłoby miło. :)
Odkryłem, że używanie PublicCacheStrategy lepiej dla odpowiedzi serwera buforowania, które wdrażają odpowiednie nagłówki cache –