【问题标题】:Ajax response time with SymfonySymfony 的 Ajax 响应时间
【发布时间】:2016-05-03 04:49:51
【问题描述】:

通过一个非常简单的调用,Ajax 在开发中加载需要 1 秒,在生产中使用 Symfony2 需要 500 毫秒:

Javascript:

$.ajax({
            url: "{{ path('my_path') }}",
            type: 'GET',
            data: {x: x},
            dataType: 'json',
        }).done(function(res) {

        });

控制器:

/**
 * @Route("/my_path", name="my_path", condition="request.isXmlHttpRequest()")
 * @Method("GET")
 */
public function myPathAction(Request $request)
{
    return new JsonResponse('');
}

如果我在我的 ajax 调用中更改网址

url: "test.php"

使用 test.php :

return json_encode('');

在这两种情况下,我们都在做同样的事情,但在 prod 中访问控制器需要 500 毫秒,而访问“test.php”需要 20 毫秒。

为什么 Symfony 需要花费这么多时间来访问路由,我怎样才能让它更快?

【问题讨论】:

  • 顺便说一句:prod/dev 中的 test.php 是什么意思?我认为 test.php 不使用 Symfony,所以没有开发或产品?
  • 是的,你是对的,我正在编辑

标签: javascript php jquery ajax symfony


【解决方案1】:
  • 500ms(使用 "{{ path('my_path') }}")因为该进程使用路由 symfony2 系统
  • 20ms(使用 "test.php"),因为您直接将文件定位为使用 AJAX 调用

【讨论】:

  • 我当然知道,但 Symfony 不能更快?我的意思是那太长了
  • 你没有回答问题。
【解决方案2】:

请注意,Symfony 操作也在检查它是否是 GET 请求和 XmlHttpRequest 等。所以即使你可以让它更快,你也永远不会像'vanilla' PHP 那样快。像 Symfony 这样的框架是一个很棒的工具箱,但会增加一些开销。

性能确实很重要,但也很复杂。你可以做 1000 件事来获得更好的性能。只是一些想法:

  • 首先:阅读有关Performance in the Symfony Book 的文档。 Opcache/APC 真的很有帮助。
  • 使用 Web 调试工具栏查看请求期间发生的情况。是路由器部分吗?安全?还是模板?
  • 使用浏览器的控制台(F12 表示 Chrome 控制台)查看 test.php/my_path 之间的区别。检查请求/响应标头,看看有什么区别。
  • 我刚刚切换到 PHP 7,性能提升令人印象深刻。

有人否决了您的问题,我可以想象为什么。当我开始使用 Symfony 时,性能对我来说也是一个大问题。对于许多其他开发人员来说也是如此,因此您可以找到许多其他文章、问题等。请阅读文档,在 Google/StackOverflow 等上搜索。

【讨论】:

  • 似乎是我的工作电脑太糟糕了。我在家里自己的电脑上尝试了同样的事情,它需要大约 90 毫秒的时间,这很好!我想我可以根据您的建议改进它,谢谢。
猜你喜欢
  • 1970-01-01
  • 2016-12-29
  • 2015-09-13
  • 1970-01-01
  • 2021-01-11
  • 1970-01-01
  • 2016-07-20
  • 1970-01-01
  • 2022-06-14
相关资源
最近更新 更多