【发布时间】:2016-09-19 13:44:37
【问题描述】:
我有一个页面使用 Guzzle 6 进行一些 REST 查询。它工作正常,但有时它变得太慢,因为它总是在进行查询。我发现有 guzzle-cache-middleware 应该缓存来自远程 API 的响应。
但是我无法让它工作,我的代码如下:
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 更好地缓存实现正确缓存标头的服务器响应
标签: php caching guzzle guzzle6