4

我有一个标签文本字段,在输入新标签时会建议类似的现有标签。建议通过 ajax 请求检索到控制器,该控制器使用 Doctrine 从数据库中提取它们。IE:

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

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

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

4

3 回答 3

1

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

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

您还应该激活像 php APC 这样的缓存管理器,它可以减少更多的请求。

例如,我在树莓派上运行一个 symfony 项目。在进行这些调整之前,一个包含 8 个数据库请求的请求大约需要 25 秒才能显示。经过这些调整后,不到 3 秒(平均 2.5 秒)就显示了一个页面

另一个可能的调整列表:

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

于 2014-02-21T10:04:31.067 回答
0

您可以使用以下命令要求教义(如果您还没有这样做)以数组的形式获取结果(无需将整个查询转换为一堆对象):

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

应该加快速度一点。

于 2013-02-25T11:00:16.000 回答
0

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

于 2014-03-03T16:36:25.490 回答