2015-10-19 58 views
2

我打算將自定義webstore應用程序移植到Laravel,以便它是全新的,有光澤的,並且很樂意提供支持。花了幾個小時來設置框架並開始移植主佈局之後,我決定測試它的執行方式。我已經安裝了一份我的原始應用程序,並將移植的部分安裝到laravel,在那裏我創建了一個帶dimsav/laravel翻譯的部分模型,並將主要導航輸出爲大約30個部分的Section :: all()。Laravel性能

對於我laravel安裝大約需要360ms渲染只是上面:

,當我看到在Firebug的Netwrok標籤的簡單觀察的結果我感到非常震驚。我想象中的響應時間是多少時,整個頁面將被移植...

因爲要用原來的應用〜30ms的服務全網頁上相同的導航,熱門產品,子菜單,頁腳導航,檢查購物車內容等。

兩者都在相同的虛擬服務器上,甚至使用相同的數據庫,也沒有在任何緩存。

我異型的代碼,以發現任何問題,但我發現的是,

  • 6.4%用於自動加載(爲32ms - 比整個請求0對於其他版本的更多),
  • 12.5%/63ms - 服務註冊
  • 11.1%/ 56ms - 配置loadig
  • 無盡的Pipline呼叫44.5%。關於時間似乎花費在無休止的管道調用上。

只是爲了確認,一個空的laravel應用程序在大約17ms內響應。

我在這裏錯過了些什麼?我想到在移植到框架時會有一些性能下降,但是(假設整個設置的響應時間會增加,所以我預計〜20x)20x似乎很瘋狂。這些時間對於laravel來說是否正常,並且使用緩存(例如Redis)或其他優化技術有什麼大勝利?我想知道除了緩存之外是否還有其他任何內容?

+2

你有很多路線?這被稱爲是過去版本的瓶頸,導致了[路由緩存](http://laravel.com/docs/5.0/controllers#route-caching)的引入。 – Jeemusu

+0

不,我剛剛開始遷移,所以它實際上是2條路線 - 一個用於hompage和一個默認的路線,我使用laravel輸入URI。 Laravel是全新安裝,所以它是5.1。 – Okneloper

+0

你在你的控制器中做什麼,或者你的程序的大部分?您的查詢執行多長時間?什麼是你的服務器規範?你在當前的網上商店緩存什麼(查詢等)。 – Jeemusu

回答

0

在從數字海洋$ 5 VPS實例與部署應用程序我看到的響應時間:

512MBMemory 1核心處理器 20GBSSD硬盤

流明60-120毫秒 Laravel 100-300毫秒

這些特定的應用程序不緩存。對於已編譯的視圖,100-150毫秒的響應時間似乎是laravel的基準響應時間。顯然,查詢速度慢會增加。

添加redis或memcached將大大減少響應時間,而在大多數情況下,與db相比,響應時間非常接近laravel的基本響應時間。

你應該確保在你的APP_DEBUG設置爲false。ENV文件:

# /.env 
APP_ENV=production 
APP_DEBUG=false 

運行php artisan optimize

+0

謝謝。不確定Lumen適合ecom。 正如我在上面的評論中所說,這不是一個真正的VPS(即不是本地VM)的問題。對不起,我沒有可以訪問的號碼。 – Okneloper

+0

嗯,剛剛添加流明增加細節,你會是正確的,它不適用於你的用例。很高興你明白了:) – AndHeiberg