Symfony2中的快速ajax响应

时间:2013-02-24 20:27:17

标签: ajax performance symfony tags

我有一个标记文本字段,在输入新标记时,会建议类似的现有标记。 建议通过ajax请求检索到控制器,控制器从带有Doctrine的DB中提取它们。即:

  • 请求 /tags/suggestions?q=foo
  • 回复 ["foo","food","fool"]

问题是请求太慢(至少2秒,在 prod 中),在这种情况下太多了。

有没有办法让请求更快? 根据分析器,主要时间消费者是 kernel.request ,占总时间的50%。

3 个答案:

答案 0 :(得分:1)

如果kernel.request很慢,那么它不一定是symfony方面的问题。

您应该通过使用php-fastPGM而不是php标准模块更新Apache来优化您的服务器。

你还应该激活一个像php APC这样的缓存管理器,它可以减少一些请求。

例如,我在覆盆子pi上运行symfony项目。在进行这些调整之前,一个带有8个数据库请求的请求大约需要25秒才能显示。经过这些调整后,页面显示时间不到3秒(平均2.5秒)

另一个可能的调整列表:

http://slides.liip.ch/static/2012-05-18_symfony-speed.html#9

答案 1 :(得分:0)

您可以通过使用以下方式询问doctrine(如果您还没有这样做)将结果作为数组获取(不将整个查询转换为一堆对象):

$q = $em->createQueryBuilder('t')->(...);
$q -> getQuery() -> fetchArrayResult();

应该加速一点。

答案 2 :(得分:0)

对于 ajax autocomplete 等小页面,我决定使用Silex这是一个微型Symfony2,它为我提供了一个优雅而快速的解决方案。