[英]CakePHP model loading take a while
為什么App::import('*', '*');
,以及模型加載需要〜3-5ms?
當你有大約100個頁面所需的模型時,這非常煩人; 加載核心和模型只需要或多或少300毫秒。
此外,我看到啟用緩存系統時,此加載時間不會減少。
您是否知道為什么這么長時間以及另一個減少需要大量模型的應用程序的時間?
提前致謝!
編輯 :當我使用文件緩存系統(白名調試模式為0)時,我看到緩存生成的文件的創建日期屬性始終與上次生成頁面時相同。 這意味着緩存每次都會重新生成模型文件(盡管調試模式設置為0)。 這是正常的嗎?
EDIT2 :當我用Notepad ++打開模型緩存文件時,在開頭有一些尾隨的“nul”標志,我沒有在其他緩存文件中(如持久性 )。
編輯3 : 長話短說 :為什么一個模型的加載時間如果一個緩存系統打開就像沒有這個緩存系統一樣?
真的,我看到每個標簽,用戶,問題,評論,廣告和一些自定義查找查詢。 (這一頁)。 在這種情況下,不需要喜歡或共享或那些屬性作為模型。 如果您獲得了那么精細,那么您必須期望減輕加載問題。
如果你需要在一個頁面中使用30個模型,那么你正在做一些不合邏輯的事情,或者你的用例遠遠超出常規。
有幾點需要注意:
應用程序:import(' ',' ')正在加載所有內容 - 因此單獨占用資源。 如果您有一個包含30多個模型查詢的頁面 - 首先通過他們的關系獲取數據。 不要使用$ this-> loadModel()或$ uses數組; 這不是CakePHP的設計方式。 在這里查看我的回復更好的做法:
然后,您可以進一步限制獲取的數據(這會提高速度):
Re:Cache - 在CakePHP書中閱讀它,因為它列出了一些很好的例子。 如果您正在努力,可能值得切換到MemCache或其他專用系統而不是CakePHP平面文件。
優化是一項相對的任務。 您的時間和資源最好用於優化被測量的消耗最多資源的應用程序部分。 如果你的瓶頸只有3毫秒,那么我很難理解為什么你需要進行任何優化。
話雖這么說,如果你只是一個非常好奇的人,想要找到你的問題的答案,我會鼓勵你坐下來自己做一些內部代碼的分析,以打破導致執行時間的因素。 CakePHP郵件列表可能是了解Cake內部工作方式的另一個有用資源。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.