2012-06-10 26 views
2

在CakePHP的每個文檔中都寫道,requestAction會降低CakePHP的性能。始終建議使用控制器操作並通過視圖文件獲取結果。但有時我真的需要requestAction。CakePHP中的requestAction性能

CakePHP book

如果沒有緩存requestAction使用可能會導致性能不佳。它很少適合在控制器或模型中使用。

哪些進程使reuqestAction降低性能。

應該怎麼做,以防止requestAction的性能損失? 添加這樣的東西?

$this->autoRender = false
到控制器動作,

function beforeFilter() { 
    if ($this->params['action'] == "myaction") { return; } 
} 

到控制器類

+1

'requestAction'得到了一個流言,但它確實不是那麼糟糕,因爲很多請求時間正在與服務器交談並在瀏覽器中解釋,這是因爲它在技術上處於相同的HTTP請求中。嘗試一些快速的基準測試,看看:) – jeremyharris

回答

1

基本上requestAction(),不但有額外的頁面請求你的行動。此外,requestAction()以不同的方式處理url,因爲它會返回字符串以外的數據。因此,在控制器中,您需要首先檢查返回請求的類型。

這裏是一個很好的文章有關requestAction()

1

(經過1,5年的CakePHP經驗)我可以說,如果有一個requestAction,存在一個重構需求。在剛開始的幾個月裏,我添加了太多的requestActions。在得到requestAction降低性能的信息後,我沒有再添加任何內容。

隨着月份的過去,我從代碼中刪除了幾乎所有的requestAction。在一個大代碼庫中,我們只有3-4個requestActions,並且每天只能觸發一次。如果使用requestAction,則缺少來自控制器層查看圖層的有價值信息。請重新考慮使用情況。

相關問題