我将 Laravel 4 与 PHP Shopify 连接器结合使用。我试图通过在首次需要时缓存特定产品页面来限制检索 Shopify 产品的调用。
我在 Laravel 中做了以下简单的路线来测试这个流程:
Route::get('product/{id}', function($id)
{
$value = Cache::remember($id, 10, function() use ($id)
{
echo('Getting this from Shopify');
$shopify = new ShopifyLib;
return $shopify->getShopifyProduct($id);
});
var_dump($value);
});
ShopifyLib 是我编写的用于与 Shopify 连接器通信的 PHP 库。该调用每次都会正确返回 JSON 格式的产品页面。问题是调用总是在 Shopify 外部进行,而不是从缓存中检索。
我正在使用数据库缓存并保存以下条目:
key : laravel172989477
value : eyJpdiI6Imw4aUwzNHN4eExwdElPWFZKXC9hdFpVRjc4ZG5pK1dYMTlJVm44a1doKzlvPSIsInZhbHVlIjoieVJ6N2J6Q1A3SGNsWG1xWFJKTUdVak5FSEtHWDZKQkd2Y2x0ZEI2dHlvcz0iLCJtYWMiOiJhNWU0OGUxOTkyNWE2NTRhNTY1ZTNhMjRlOWNhNzRjNGI1ZDIyY2YzNGM3NTVjOThhMDUyYjllZmI1OTJiZmE1In0=
expiration : 1386616552
$id 永远不会改变,所以我假设每次都应该返回这个条目。
我尝试了一个更简单的示例:
Route::get('product/{id}', function($id)
{
$value = Cache::remember('test', 5, function()
{
echo('Not getting this from the cache!');
return 'example';
});
var_dump($value);
});
这按预期工作,只调用一次非缓存,所有未来的调用都进入缓存。