2016-05-22 10 views
5

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. :)

+0

Odkryłem, że używanie PublicCacheStrategy lepiej dla odpowiedzi serwera buforowania, które wdrażają odpowiednie nagłówki cache –

Odpowiedz

5

udało mi się rozwiązać ten problem poprzez zastąpienie $stack->push( z:

$stack->push(
     new CacheMiddleware(
     new GreedyCacheStrategy(
      new FlysystemStorage(
      new Local("/tmp/sitex") 
     ), 
      180 
     ) 
    ), 
     "cache" 
    ); 
  • GreedyCacheStrategy: Zawsze buforować odpowiedzi bez sprawdzania to nagłówki informacji cache;
  • 180 to TTL, dla którego chcemy przechowywać pamięć podręczną.

wymienić także use Kevinrob\GuzzleCache\Strategy\PrivateCacheStrategy; przez use Kevinrob\GuzzleCache\Strategy\GreedyCacheStrategy;

Powiązane problemy