O Slim é um Micro Framework para a construção de serviços. Extremamente simples mas ao mesmo tempo poderoso.
Com o Slim é possível criar as rotas dos serviços Web para por exemplo integração com um APP mobile. Além disso é possível criar para cada rota um Mecanismo de Cache HTTP.
A razão para fazer o “CACHEAMENTO” é que o desempenho de sites e aplicativos pode ser significativamente melhorado pela reutilização de recursos anteriormente obtidos.
Os ganhos desta estratégia tecnológica são: redução da latência e do tráfego de rede e, assim, diminuem o tempo necessário para exibir uma representação de um recurso.
Como consequência os sites e serviços ficam mais performáticos!
Ao implementar o cache o tempo e uso dos recursos da nuvem são otimizados!
Slim 3 usa um componente opcional o Slim-HttpCache PHP para armazenamento em cache HTTP.
Você pode usar esse componente para criar e retornar respostas que contenham cabeçalhos Cache, Expires, ETag e Last-Modified que controlam quando e o tempo que a saída do aplicativo é mantida pelos caches do lado do cliente.
Talvez você precise configurar sua configuração php.ini “session.cache_limiter” para uma string vazia para que isso funcione sem interferências.
O primeiro passo para implementar é instalar a API com o composer. (Consideramos que você já tenha o Slim Framework implementado)
composer require slim/http-cache
Para inicializar o Cache em seu Webservice altere a declaração de seu objeto APP para:
$container = new \Slim\Container;
$container['cache'] = function () {
return new \Slim\HttpCache\CacheProvider();
};
$app = new \Slim\App($container);
$app->add(new \Slim\HttpCache\Cache('public', 86400));
Feito isso o Middleware necessário para implementar a estratégia será inicializado.
Próximo passo é definir o tempo de “Cache” no cliente para cada serviço da seguinte forma:
/**
* @Search //Define Routes //Busca Eventos de Hoje
*/
$app->get('/busca/', function (Request $request, Response $response) use ($app) {
//Content Type JSON Cross Domain JSON
//Cache 24 hours
$resWithExpires = $this->cache->withExpires($response, time() + 3600 * 24);
$newResponse = $resWithExpires->withHeader('Content-type', 'application/json')
->withHeader('Access-Control-Allow-Origin', '*')
->withHeader('Access-Control-Allow-Headers', 'X-Requested-With, Content-Type, Accept, Origin, Authorization')
->withHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS');
//Return Eventos for today
$data = GuiaController::getEventosDeHoje();
logActions("BUSCA");
//Response Busca Hoje
return $newResponse->withJson($data, 201);
});
Após a ativação do Middleware do Slim Framework o tempo de resposta ficou em 14 ms. Isso ocorreu após a primeira requisição no servidor Apache 2 Mysql na Digital Ocean! Ou seja a requisição ficou armazenada localmente.
Happy Coding! 😀