2014-10-17 86 views
1

我有一個Symfony 2項目,加載速度有點慢。該頁面有點沉重,但我仍然覺得它很慢很慢。Symfony對FOS路由的多個請求

我檢查了Firefox中的網絡檢查員,注意到大約一半的加載時間是由多次調用routing?callback=fos.Router.setData引起的,每次都會返回相同的javascript。

例如,有一次有12個調用,把1.92秒出的總3.84秒,有效地加倍已經加載時間較長...

這些是什麼FOS腳本和爲什麼需要這麼多他們? Symfony 2配置有問題嗎?

回答

4

FOSRouting而服務路徑可以有兩種工作方式:

  1. 呼叫控制器產生路由每一個請求(飛)。這對開發環境很方便,因爲它沒有被緩存。
  2. 使用php app/console fos:js-routing:dump命令可以將路由轉儲爲靜態js。

看來您正在使用選項號碼1。嘗試使用第二個 - 這會將您的路由轉儲到靜態js文件中,該文件將被服務而不是控制器調用。請閱讀docs如何做到這一點。

爲了在dev env和prod env的性能方面保持方便,您可以使用這種代碼來包含您的路由。只記得運行fos:js-routing:dump命令每部署到prod:

{% if app.debug %} 
     <script src="{{ path('fos_js_routing_js', {"callback": "fos.Router.setData"}) }}"></script> 
{% else %} 
    {% javascripts 'js/fos_js_routes.js' %} 
     <script src="{{ asset_url }}"></script> 
    {% endjavascripts %} 
{% endif %} 
+0

相當昂貴的便利。是的,似乎每個請求都對應一條正在解析的路徑。謝謝。 – ecc 2014-10-17 08:57:53