4

新しいタグを入力しているときに、同様の既存のタグを提案するタグ付けテキストフィールドがあります。提案は、Doctrineを使用してDBからそれらをプルするコントローラーへのajaxリクエストによって取得されます。すなわち:

  • リクエスト /tags/suggestions?q=foo
  • 応答 ["foo","food","fool"]

問題は、リクエストが遅すぎることです(prodでは少なくとも2秒)。この場合は長すぎます。

リクエストを高速化する方法はありますか? プロファイラーによると、主な時間の消費者は、合計時間の50%を占めるkernel.requestです。

4

3 に答える 3

1

kernel.request が slow の場合、必ずしも symfony 側の問題ではありません。

php 標準モジュールの代わりに php-fastPGM を使用して Apache を更新することにより、サーバーの最適化を検討する必要があります。

php APC のようなキャッシュ マネージャーを有効にして、さらにいくつかの要求を減らす必要があります。

たとえば、ラズベリーパイでsymfonyプロジェクトを実行しています。これらの調整の前は、8 つのデータベース リクエストを含む 1 つのリクエストが表示されるまでに約 25 秒かかりました。これらの調整の後、ページは 3 秒未満 (平均 2.5 秒) で表示されました。

可能な微調整の別のリスト:

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

于 2014-02-21T10:04:31.067 に答える
0

ajax オートコンプリートなどの小さなページには、マイクロ Symfony2 であるSilexを使用することにしました。これにより、エレガントで高速なソリューションが得られます。

于 2014-03-03T16:36:25.490 に答える
0

以下を使用して、(まだ行っていない場合) doctrine に結果を配列として取得するように依頼できます (クエリ全体を一連のオブジェクトに変換することなく):

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

物事を少しスピードアップする必要があります。

于 2013-02-25T11:00:16.000 に答える