Json Symfony REST API的响应缓存
我有一个使用FOSREST包的restapi。响应由JMS包序列化。现在我想缓存一些响应,因为序列化需要相当长的时间。我考虑在序列化之后存储响应数据,然后,如果数据库没有更改,则交付缓存的响应,而不是再次进行序列化。有什么办法可以做到这一点吗 更具体地说: 我有一个控制器,它输出大量的数据,而这些数据大部分时间是不变的。因为序列化需要几秒钟的时间,所以我想加快速度 使用缓存的输出 我想我需要设置一个事件后序列化来写入缓存。 但是因为fosrestBundle被配置为序列化视图处理的所有数据,所以我找不到一个方法来输出预序列化的数据而不再次发送到序列化程序Json Symfony REST API的响应缓存,json,rest,symfony,caching,fosrestbundle,Json,Rest,Symfony,Caching,Fosrestbundle,我有一个使用FOSREST包的restapi。响应由JMS包序列化。现在我想缓存一些响应,因为序列化需要相当长的时间。我考虑在序列化之后存储响应数据,然后,如果数据库没有更改,则交付缓存的响应,而不是再次进行序列化。有什么办法可以做到这一点吗 更具体地说: 我有一个控制器,它输出大量的数据,而这些数据大部分时间是不变的。因为序列化需要几秒钟的时间,所以我想加快速度 使用缓存的输出 我想我需要设置一个事件后序列化来写入缓存。 但是因为fosrestBundle被配置为序列化视图处理的所有数据,所以
public function postProductsAction(Request $request)
{
$em = $this->get('doctrine')->getManager();
// TODO check if db is unchanged and cache exists
// if check is true stop here and redirect to cached json response
$products = $em->getRepository('PPApiBundle:Produkte')->findBy(array("status" => 1));
$data = array(
"data" => $products,
"opt" => array()
);
$view = $this->view($data, 200);
$ret = $this->handleView($view);
// TODO cache json string after serialization
return $ret
}
您可以使用条令查询生成器的查询缓存和响应缓存方法在序列化之前缓存结果
->getQuery()->useQueryCache(true)->useResultCache(true, 3600)
您可以使用条令查询生成器的查询缓存和响应缓存方法在序列化之前缓存结果
->getQuery()->useQueryCache(true)->useResultCache(true, 3600)
您如何知道datbase没有更改?在mysql中,可以在请求表的信息模式中检查更新时间。您如何知道datbase没有更改?在mysql中,可以在请求表的信息模式中检查更新时间。查询缓存是一件好事,但在我的情况下,我想缓存json outputquery缓存是一件好事,但在我的例子中,我希望缓存json输出