2023 年 Laravel 性能優(yōu)化終極指南
我們正在處理一個繁重的 Laravel 網(wǎng)站,其中包含許多請求和結構化查詢語言/雄辯的調用。仍然有高CPU VPS和高內(nèi)存,我們覺得性能提升空間很大。
Laravel 已成為構建以業(yè)務為中心的應用程序(包括電子商務平臺和信息管理系統(tǒng))的首選。
我們同意 Laravel 的發(fā)展突飛猛進,其始終如一的微調性能再次使其成為 2023 年最佳 PHP 框架。Laravel 是一個從簡單的 Web 應用程序到復雜的 API 的一站式 PHP 開發(fā)框架??焖俚拈_發(fā)方式、MVC 架構模式和一組庫可以方便地構建結構良好的漂亮代碼。
根據(jù)谷歌趨勢,Laravel 在過去幾年中仍然是最常用和最受歡迎的 PHP 框架。
該框架具有一些出色的功能,使開發(fā)人員的工作變得輕松。當您在項目開發(fā)中使用 Laravel 時,您必須學習在您的應用程序中進行 PHP Laravel 性能優(yōu)化的策略和技巧,以發(fā)揮最大的潛力。
Laravel 應用程序可以輕松優(yōu)化,這是使用此框架的最佳部分,因為您可以在需要時優(yōu)化您的應用程序以提高其性能。
網(wǎng)站速度的重要性
您可能想知道如果您的網(wǎng)站加載速度快一秒會有什么影響。相當于一枚金幣!如果您想留住訪問者并將他們轉化為您的客戶,即使是幾分之一秒也很重要。
用戶界面、搜索排名、對話等都會影響您網(wǎng)站的 Google 排名。如果您的客戶和訪問者隨著時間的推移面臨性能滯后,他們將逐漸停止使用您的網(wǎng)站。
如何確保 Laravel 網(wǎng)站的安全性?
下面提供的 Laravel 網(wǎng)站安全最佳實踐將確保您免受任何威脅。
選擇用于托管的安全服務器
您應該定期備份您的網(wǎng)站,使用強密碼并完成授權。您的網(wǎng)站包含用戶的敏感信息;因此,您不應使用共享服務器。在選擇您的 Web 服務器之前,您應該與您的提供商核實他們是否提供安全連接、使用 SSH 協(xié)議和身份驗證、FTPS、SSL、專用網(wǎng)絡和 VPN。為了提高安全性,您還可以考慮在您的 Linux 服務器上禁用 ssh 密碼登錄。
使用最新版本更新您的網(wǎng)站
不要錯過最新 Laravel 版本帶來的任何改進。確保為您的網(wǎng)站使用最新版本的 Laravel。最新版本是 Laravel 9。如果你不升級,你可能會缺少 Laravel 網(wǎng)站的基本功能。此外,較新版本的 Laravel 通常包括性能改進。
此外,請查看Laravel 9 中的新功能,以了解有關錯誤修復、安全改進和新功能的更多詳細信息。
更新模塊、包和插件
一件事是你應該只使用你的項目需要的模塊、插件和包,并丟棄其他的。僅僅將 Laravel 網(wǎng)站更新到最新版本是不夠的。您需要更新所有項目模塊、包和插件。
檢查防火墻設置
非常重要的是,你的 Laravel 網(wǎng)站應該有一個 Web 應用程序防火墻,作為你的 HTTP 應用程序的過濾器和監(jiān)視器。您的 Web 應用程序防火墻應該是基于云的解決方案或安裝在您的系統(tǒng)上。
圖片來源:GitHub
通過防火墻,您將獲得許多好處,例如防止暴力攻擊、垃圾郵件、后門、SQL 注入、DDOS 和其他保護。
使用 HTTPS
HTTPS(安全超文本傳輸協(xié)議)是一種互聯(lián)網(wǎng)通信協(xié)議,可對用戶數(shù)據(jù)進行加密和解密以保護其免受黑客攻擊。它是互聯(lián)網(wǎng)上最安全的通信方式,數(shù)百萬網(wǎng)站使用它來保護用戶的數(shù)據(jù)。
當您的 Web 應用程序使用 HTTP 時,您的所有網(wǎng)站信息都以明文形式傳輸,這很容易受到黑客和攻擊。
因此,如果您在 HTTP 之上使用 HTTPS 將會有所幫助,這將確保您網(wǎng)站的信息安全。
想讓您現(xiàn)有的應用程序可擴展并優(yōu)化 SEO 嗎?
從我們這里聘請 Laravel 開發(fā)人員,以獲得安全、數(shù)字可擴展且高度優(yōu)化的應用程序。
使用內(nèi)置的 Laravel 安全功能
既然已經(jīng)在里面了,為什么還要在外面搜索呢?是的,Laravel 帶有一個內(nèi)置的身份驗證系統(tǒng)來保護您的網(wǎng)站信息。Laravel 框架負責用戶身份驗證,并只為每個用戶提供所需的訪問權限。
您網(wǎng)站的敏感信息僅限于用戶,不會公開。保護它免受 SQL 注入攻擊 用戶輸入(例如服務器變量、cookie 以及“GET”和“POST”等輸入值)可能會增加 SQL 查詢注入的漏洞。
為了克服這個問題,你應該使用 Laravel 的 Eloquent ORM,它使用 PDO 綁定來避免 SQL 注入。
驗證和過濾數(shù)據(jù)
在以查詢的形式將用戶數(shù)據(jù)發(fā)送到您的系統(tǒng)之前,您必須始終過濾和驗證數(shù)據(jù)以直接防止 SQL 注入。
批量分配期間采取預防措施
當您想要輸入一長串變量時,批量分配是一個方便的功能。
但是,我們不推薦它,因為網(wǎng)絡攻擊者可以從客戶端更改數(shù)據(jù),這非常容易受到攻擊。您可以使用 $fillable 或 $guarded 屬性,但要非常謹慎,不要忘記向模型中添加新字段。
減少來自 CSRF 跨站請求偽造的 Laravel 漏洞
Laravel 使用 CSRF 令牌來確保沒有虛假請求并且沒有入侵。
每個用戶都有自己的 CSRF 令牌,當用戶發(fā)出任何請求時,Laravel 系統(tǒng)會將其與之前的用戶會話令牌進行匹配。因此,您必須在編寫 HTML 應用程序時添加一個隱藏的 CSRF 字段。
圖片來源:GitHub
要在實際操作中查看上述所有內(nèi)容和一些額外的 Laravel 安全提示,請觀看來自 WebDevMatics 的視頻。你會徹底享受它。
在深入了解確保應用程序安全的關鍵點之后,現(xiàn)在是時候了解為什么要在 2023 年關注Laravel 性能優(yōu)化和頂級 Laravel 性能優(yōu)化技巧。
為什么關注 Laravel 性能優(yōu)化?
您肯定已經(jīng)創(chuàng)建了一個 Laravel 應用程序,Laravel 開發(fā)人員使用 PHP 框架和基本庫來發(fā)揮您項目創(chuàng)意的最大潛力。但是,總有完善和改進的余地。
大多數(shù)企業(yè)使用 Laravel 來構建他們的業(yè)務信息系統(tǒng),因此他們的業(yè)務性能與 Laravel 的性能密切相關。為確保 Laravel 項目的性能和部署順利進行,您應該優(yōu)先考慮優(yōu)化 Laravel 應用程序以獲得您的業(yè)務利益。
Laravel 管理信息系統(tǒng)使您能夠做出重要的業(yè)務決策,因此優(yōu)化 Laravel 應用程序的性能必將改善業(yè)務前景。
應用程序的頂級 Laravel 性能優(yōu)化技巧
1.路由緩存
如果您的 Laravel 應用程序有很多路由和配置,那么 php artisan 路由緩存是加速 PHP 應用程序改進的基本功能。
運行下面列出的命令來緩存 routes.php 文件
在使用閉包時,artisan 命令拋出一個排除項。當我們甚至嘗試編譯路線時,建議與控制器交換。
它類似于配置緩存。您在 routes.php 中修改的更改一旦緩存就不會產(chǎn)生有利的效果。如果要刷新路由緩存,可以再次運行上面的代碼。但是如果你想清除路由緩存,運行下面的代碼。
2. 有效地使用 Artisan 命令
Laravel 在提升性能方面有額外的好處
1. php artisan 配置:緩存2.3. php artisan路由:緩存4.5. // 注意:Artisan Optimize 在 Laravel 5.5 中被移除;這適用于以前的版本。6. php artisan 優(yōu)化 --force
當您使用如此多的配置和路由文件時,命令很有用。提示:確保在更改后清除緩存。
3.使用部署工具來呼吁所有命令
我們知道它不能被視為性能提示,但它會幫助您減少時間,這很重要。deployer 是一個部署工具,如果你曾經(jīng)使用過 composer 來處理你的項目依賴,你會覺得很對。Deployer 可以通過一個命令作為種子、優(yōu)化和遷移部署到 Laravel 應用程序。
4. 預加載
檢索 Eloquent 關系最常見的問題是 N+1 查詢問題。讓我?guī)椭私鈨煞N不同型號的公寓及其所有者的這種情況。考慮一下如果你想找回他們的所有者,為了實現(xiàn)這一點,你將需要運行以下代碼:
它將幫助您執(zhí)行一個查詢以從數(shù)據(jù)庫中找出所有公寓,而另一個查詢將幫助您找出所有者。讓我們繼續(xù)看圖像,我們有 100 個公寓,這個循環(huán)需要 101 個查詢:一個用于公寓,另一個用于找出每輛車的所有者。這聽起來很常見是因為我們使用的是小型數(shù)據(jù)庫嗎?但是,我們希望您想象一個大型數(shù)據(jù)集和查詢來想象實際情況。
為了克服這個問題,我們更喜歡使用預加載。
您可以通過運行上述代碼將操作減少到僅兩個查詢。
準備好提高您的 Laravel 應用程序性能了嗎?
聯(lián)系最值得信賴的Laravel 開發(fā)公司,構建可擴展、高效且用戶友好的應用程序
5.隊列
如何使用隊列來改進應用程序。您開發(fā)的圖像是一個應用程序,它在注冊時向新用戶發(fā)送歡迎電子郵件。它使用第三方電子郵件服務,例如 Mailgun。一個新的用戶記錄將被插入到數(shù)據(jù)庫中,因此呼叫被重定向到 Maligun 以發(fā)送歡迎電子郵件。
此第三方電子郵件可能需要幾秒鐘,因此用戶可能會認為注冊過程很慢。您可以使用 Queue 發(fā)送電子郵件并將其作為后臺任務運行。該代碼可能類似于以下內(nèi)容:
公共函數(shù)寄存器(請求 $request)
{
// 驗證表單輸入
$this->validator($request->all())->validate();
// 將用戶持久化到數(shù)據(jù)庫
$user = $this->create($request->all());
// 發(fā)送歡迎郵件
郵件::至($user)->發(fā)送(new WelcomeEmail($user));
// 登錄用戶
$this->guard()->login($user);
返回 $this->registered($request, $user) ?: redirect($this->redirectPath());
}
運行此代碼將提高應用程序的性能并增強用戶體驗。
6. 利用 JIT 編譯器
PHP 是一種計算機機器和服務器端語言。它本身不理解 PHP 代碼。通常,程序員使用編譯器將代碼編譯成字節(jié)碼并解釋 PHP 代碼。程序編譯過程會影響 Laravel 應用程序的性能和用戶體驗。因此,Laravel 程序員可以使用 Zend Engine 自帶的即時編譯器,快速、一次性地編譯代碼。
關于后端開發(fā)的Django 和 Laravel你需要知道的一切,
7.壓縮圖像
如果您的 Laravel 應用程序開發(fā)包含許多圖像,您應該將它們?nèi)繅嚎s以優(yōu)化性能。有一些方法可以進行優(yōu)化。但是,不同的圖像需要不同的工具來保持圖像的質量和分辨率。
如果您使用 Laravel Mix,建議您在編譯圖像時使用像ImageMin這樣的 NPM 包。對于非常大的圖像,先嘗試TinyPNG壓縮圖像,然后使用 ImageMin 盡可能地壓縮它。
8.類圖優(yōu)化
讓你的 Laravel 應用程序保持緊湊并準備好輕松加載的一個聰明技巧應該是將所有包含的文件放在一起。當你想在你的應用程序中包含多個文件時,你只需要調用并擁有一個公共文件。
這樣的舉動將通過將多個文件包含在一個組合文件中以加載到您的應用程序中來加強您的 Laravel 應用程序。
9.使用緩存
通過將經(jīng)常訪問的數(shù)據(jù)存儲在內(nèi)存中,緩存可以顯著提高網(wǎng)站或應用程序的速度。Laravel 提供了一種富有表現(xiàn)力且方便的方式來為您的應用程序配置緩存。Redis 和 Memcached 是兩個流行的緩存后端,與 Laravel 配合得很好。
10.優(yōu)化你的數(shù)據(jù)庫查詢
Laravel 的 Eloquent ORM 可以輕松編寫高效的數(shù)據(jù)庫查詢,但重要的是要確保您的查詢實際上針對您的數(shù)據(jù)庫引擎進行了優(yōu)化。尤其要小心使用 Eloquent 的“預先加載”功能,因為它通常會導致查詢效率低下。延遲預加載通常是一種更好的方法。除此之外,只需注意您的應用程序正在執(zhí)行的 SQL 查詢,并確保它們盡可能高效。
11.預編譯資產(chǎn)
通過將應用程序中所需的不同資產(chǎn)分開,開發(fā)人員將始終保持正確的開發(fā)環(huán)境。雖然這是一個很好的做法,但對于生產(chǎn)場景來說并不是強制性的。當然,Laravel 有內(nèi)置的 artisan 命令可以幫助你解決這個問題。
Laravel 將使用上述命令自動分類您最常用的類并將它們保存在一個文件中。
12.資產(chǎn)捆綁
所有 Laravel 應用程序都伴隨著工具 Laravel Mix,它可以有效地從 Webpack 構建您的應用程序 API。Laravel Mix 由常見的 CSS 和 Javascript 預處理器組成,可為您提供腳本、樣式和其他編譯。
例如,如果您想要為您的應用程序文件設置一些特定的樣式格式,例如:
使用 Laravel Mix,您的應用程序將從 normalize.css 和 style.css 自動創(chuàng)建一個 all.css 文件。因此,您可以將兩個樣式表合并到一個 all.css 文件中,而不是單獨檢索它們。這個 hack 將提高 Laravel 應用程序的性能。
13.資產(chǎn)縮小
正如 Burak ?zdemir 所說,當您通過將資產(chǎn)編譯到一個文件中來實施上述性能優(yōu)化技巧時,您的文件會變得很大。要解決此問題,您可以使用以下命令:
14.使用內(nèi)容分發(fā)網(wǎng)絡(CDN)
CDN 可以通過將資產(chǎn)緩存在世界各地的服務器上來幫助更快地交付資產(chǎn)。這對于圖像或 JavaScript 庫等大文件特別有用。例如,如果您的網(wǎng)站是從印度訪問的,那么從印度的 CDN 服務器加載資產(chǎn)比從美國服務器加載資產(chǎn)要快。
15. 安裝 Profiler 包 - Laravel Debugbar
Laravel Debugbar 包可用于分析您的應用程序并輕松識別瓶頸。該包提供了一種方便的方式來記錄 SQL 查詢、查看有關請求、響應等的信息。它可用于輕松識別應用程序中的瓶頸。為了使用 Laravel Debugbar 包,請使用 Composer 安裝它:
$ composer require barryvdh/laravel-debugbar --dev配置調試欄后,您可以通過調用 debugbar() 輔助函數(shù)在您的應用程序中訪問它:debugbar()->addMessage('foo', 'bar');您還可以使用 Facade 訪問調試欄:Debugbar::addMessage('foo', 'bar');
結論
我們希望您喜歡 Laravel 性能優(yōu)化的 Laravel 性能檢查表。您一定要進行 Laravel 性能監(jiān)控分析,并自行找出哪些提示和技巧可以幫助您擁有出色的優(yōu)化應用程序。我們擁有經(jīng)驗豐富的 Laravel 應用程序開發(fā)人員,他們向您保證響應速度最快的業(yè)務應用程序。
要改進 Laravel 應用程序的 Laravel 性能調優(yōu),請從我們這里聘請 Laravel 開發(fā)人員,以便在您方便的時候完成工作。
言鼎科技主做軟件開發(fā),微信小程序,網(wǎng)站開發(fā),軟件外包,手機APP開發(fā)。如有需要記得聯(lián)系我們!