2012-05-10 59 views
7

我目前正在使用Zend Framework 1.11.11和Doctrine 2.2構建一個Web應用程序。我搜索了很多最好的方法和黑客來優化使用的框架。學說2極端優化

在我搜索的Zend框架優化我偶然發現了這個帖子: Optimising the Zend Framework

是什麼它是,它提到,框架本身的使用出現了一些優化技術,並沒有覆蓋有趣手冊本身如:

  • 禁用viewRenderer並照顧自己的視圖渲染。

現在我正在尋找類似的技術,可以適用於Doctrine 2除了提到的here in the manual

注意

我知道很多人會提到剖析查詢,緩存和發現應用程序的瓶頸,但不是庵找:)我找學說2在使用過程中發現實際的增強。

感謝;)

回答

11

嗯,優化和黑客主義2不會是一件容易的事。我只能建議你按照官方的「最佳實踐」:

  • 使用查詢緩存
  • 使用元數據緩存
  • 預生成代理
  • 避免監聽器(或事件類型(合併它們沖洗更新),這將避免查找時間和訂閱事件環路)
  • 使用延遲加載,只要有可能
  • 確保您的關係或繼承不搞砸

(請注意,我沒有提到的結果緩存應該是優化應用程序的方式)

從我的使用,我不得不優化最重要的部分是不是教義本身(而對核心進行優化),但生成的查詢一如既往,編輯查詢和優化索引。

學說2可以是高消耗內存的同時可申請減緩所以加載了很多的實體,您可能會發現它有用知道關於clear()detach()iterate()方法。

雖然Doctrine 2有時可能很慢,但我大多發現我能夠在Zend Framework或PHP本身的其他地方優化應用程序。

比方說,Doctrine 2需要100ms,其中Zend Framework需要300ms,總共450ms(I/O stuffs,PHP內部函數等)。)

如果你可以用兩個很容易除以Zend框架採取優化原則2,以獲得像10%不會顯着提高應用程序的速度的時間。仔細想想兩次。

這裏有幾個技巧:

  • 創建您自己的看法,而不是使用視圖助手(避免助手查找)
  • 緩存您的Zend_Config對象(真重負載)
  • 避免正則表達式的路線時可能(ZF路線是一大瓶頸)
  • 使用類映射自動加載,而不是本地Zend_Loader_Autoloader的

有很多優化工作要做,有些有實際影響,有些則沒有。

確保通過剖析應用程序找到他們,一個簡單和跨平臺使用webgrind

+1

+1感謝您的詳細回答,但你可以請解釋一下這點_Avoid正則表達式的路線儘可能(ZF路線是一大瓶頸)_?其實我之前有一個帖子是在問同樣的事情。也許你可以提供一個答案吧[優化Zend框架的路線(http://stackoverflow.com/questions/10070634/optimizing-zend-framework-routes) – Songo

+1

由於這個答案已經很老了,**提示**作肯定要升級到Zend Framework 2,它已經從頭開始重寫,在大多數情況下要快得多。 –