Sabe quando você esta desenvolvendo sua aplicação, e você percebe que uma determinada rota recebe um monte de requisições sempre com o mesmo parâmetro, aquele momento em que seu webservice recebe um monte de requisições pra retornar a lista de produtos da empresa, que praticamente nunca muda?
É nessas horas que você precisa pensar em cache ( tá o exemplo pode não ser dos melhores, mas você entendeu tenho certeza..rs).
Configurar cache no slim é muito fácil. nas configurações da aplicação, basta setar um nome válido na propriedade routerCacheFile. Da uma olhadinha abaixo como fica:
$config = [
'settings' => [
'addContentLengthHeader' => false,
'displayErrorDetails' => true, // set to false in production
'routerCacheFile' => __DIR__ . '/../routes.cache.php',
],
];
$app = new Slim\App($config);
É importante lembrar que todo este cache não tem nenhum controle hein, então pra renovar o cache o mesmo terá de ser apagado (obvio que você pode criar um mecanismo para isso né :)).
No artigo que estou usando como base para transcrever este exemplo aqui, tem um exemplo que cria as rotas, e as armazena, com um pequeno teste de performance:
[
'addContentLengthHeader' => false,
'displayErrorDetails' => true, // set to false in production
'routerCacheFile' => __DIR__ . '/../routes.cache.php',
],
];
$app = new Slim\App($config);
for ($groupName = 1; $groupName <= 25; $groupName++) {
$app->group("/$groupName", function() {
for ($i = 1; $i <= 1000; $i++) {
$this->get("/$i/{id:\d+}", App\Action::class);
$this->post("/$i/{id:\d+}", App\Action::class);
$this->put("/$i/{id:\d+}", App\Action::class);
$this->delete("/$i/{id:\d+}", App\Action::class);
}
});
}
// Run!
$start = microtime(true);
$app->run();
$diff = microtime(true) - $start;
echo "\n" . sprintf("%0.03f", $diff * 1000);
O que ele esta fazendo, é criar as rotas dinamicamente. Faça um teste acesse uma rota 2 vezes, vai ser notávle o o ganho de performance.
Depois venho escrever um artigo usando o http_cache no slim, mostrando como criar rotas com datas de validade :).
POST original: https://akrabat.com/slims-route-cache-file/
Nenhum comentário:
Postar um comentário