成人怡红院-成人怡红院视频在线观看-成人影视大全-成人影院203nnxyz-美女毛片在线看-美女免费黄

站長資訊網
最全最豐富的資訊網站

Laravel怎么優化性能?18個優化必備知識分享

Laravel怎么優化性能?18個優化必備知識分享

Laravel 9 保姆級視頻教程,想學不會都難!進入學習

Laravel 是一個流行的開源 PHP 框架,以其強大的安全性和簡單而復雜的編碼架構而聞名。它是構建能夠推動收入和推動業務發展的尖端 Web 應用程序的絕佳選擇。

如今,沒有一個 PHP 開發人員不受 Laravel 的影響。他們要么是喜歡 Laravel 提供的快速開發的初級或中級開發人員,要么是由于市場壓力而被迫學習 Laravel 的高級開發人員。

擁有超過 100 萬個由 Laravel 提供支持的網站,谷歌推動了網站速度的重要性,除了令人難以置信的流暢用戶體驗之外,用戶越來越不接受任何其他東西 ,有些人正在給 PHP 和 Laravel 等框架提供性能不如其他框架的聲譽構架。雖然這很可能是事實,但這并不意味著你對此無能為力。因此,在本指南中,我們將深入探討如何優化 Laravel 的性能。

目前,Laravel 已經成為開發商業和電子商務應用程序的一個非常流行的框架。大多數組織都喜歡用 Laravel 來構建他們的業務應用程序。原因有很多。但是今天我們只關注性能優化。

Laravel 的性能優化為何如此重要?

這篇文章將介紹幾個重要的技巧,每個步驟指導優化你的 Laravel 網站。雖然有些步驟可能聽起來很有技術含量,但這些步驟很容易遵循并在你自己的屏幕上重新創建。

1. 路由緩存

Laravel 允許緩存路由。你可以執行 Artisan 命令:

php artisan route:cache
登錄后復制

所有的路由都會緩存在 routes.php 文件中。

下次需要路由時,將訪問緩存而不是路由文件。這可以通過快速路由請求來提高站點性能。

要清除緩存,可以使用類似的命令:

php artisan route:clear
登錄后復制

路由緩存是一種可以讓你的網站更流暢、加載更快的簡單方法。

2. 有效的使用 Artisan 命令

Laravel 最好的特性之一是它的命令行工具 Artisan 。如果有效地使用它,可以提高應用程序的性能。

你可以緩存路由和配置。你可以執行下面的命令來緩存配置和路由:

php artisan config:cache  php artisan route:cache
登錄后復制

Note: Artisan Optimize 在 Laravel 5.5 中被移除,在之前的版本中可以工作。

php artisan optimize --force
登錄后復制

在添加新配置或新路由時,一定要記得清除緩存??梢允褂孟旅娴拿钣行У厍宄彺妗?/p>

php artisan config:clear php artisan route:cache php artisan view:clear
登錄后復制

3. 配置緩存

Laravel 提供了一個非常有趣的命令:Artisan Cache Config,它對提升性能非常有幫助。命令的基本用法是:

php artisan config:cache
登錄后復制

緩存配置后,不會對你所做的更改產生任何影響。 如果你想刷新配置,只需再次運行上述命令。如果需要清除配置緩存,請使用以下命令:

php artisan config:clear
登錄后復制

4. 直接獲取數據

當你在 Laravel 中執行任何查詢時,Laravel會延遲執行該查詢(懶加載),它僅在需要時獲取數據。

在某些情況下,這種延遲加載行為會增加執行的查詢數,同時會降低應用程序的性能。

讓我們看一個簡單的例子來詳細了解這種行為。 如果你想獲取圖書館中書籍的作者姓名。

使用延遲加載,你最終將執行 N+1 個查詢來查找結果。 你可以從下面的代碼示例中看到它。

$books = Book::all();foreach ($books as $book) {   echo $book->author->name;}
登錄后復制

登錄后復制

在下面的代碼中,每次執行 for 循環時,都會執行查詢。 為了解決這個問題,Laravel 允許你直接加載數據。

這會增加你的查詢執行時間并減少查詢數量。 下面的代碼示例展示了我們如何在一個查詢中輕松加載完整列表。

$books = Book::with('author')->get();foreach ($books as $book) {   echo $book->author->name;}
登錄后復制

登錄后復制

讓我們看一個簡單的例子來詳細了解這種行為。
如果想獲取圖書館中書籍的作者姓名。

如果不使用預先加載,最終將執行 N+1 個查詢來查找結果。
你可以從下面的代碼示例中看到它。

$books = Book::all();foreach ($books as $book) {   echo $book->author->name;}
登錄后復制

登錄后復制

在下面的代碼中,每次執行 for 循環時,都會執行一次查詢。
為了解決這個問題,Laravel 允許預先加載關聯數據。

這會增加的查詢執行時間并減少查詢次數。
下面的代碼示例展示了我們如何在一個查詢中輕松加載完整列表。

$books = Book::with('author')->get();foreach ($books as $book) {   echo $book->author->name;}
登錄后復制

登錄后復制

5. Composer 優化

Laravel 使用一個名為 Composer 的包管理工具來管理不同的依賴項。 當你最初安裝 Composer 時,默認情況下它會將開發依賴項加載到你的系統中。

這些依賴項對于開發網站很有用。 但是,一旦你的網站完全投入運營,就不再需要它們,事實上,它們只會減慢速度。

當使用 Composer 安裝包時,使用 --no-dev-o 參數來移除 dev 依賴:

composer install --prefer-dist --no-dev -o
登錄后復制

登錄后復制

此命令允許 Composer 創建用于優化自動加載器和提高性能的目錄。 它只是請求獲取和打包官方發行版,沒有開發依賴項。

注意不要消除任何運行時依賴項。 這可能會危及網站的性能,甚至導致其崩潰。

6. 壓縮綁定配置

Laravel mix 可以在這里為你提供幫助,它編譯所有 CSS 并提供單個 app.css 文件,從而將多個 HTTP 請求減少為單個。 你還可以使用 laravel-mix-purgecss 包從項目中刪除未使用的 CSS,只需將其安裝在你的開發項目中:

npm install laravel-mix-purgecss --save-dev  # or  yarn add laravel-mix-purgecss --dev
登錄后復制

在你的文件 webpack.mix.js

const mix = require('laravel-mix');require('laravel-mix-purgecss');mix.js('resources/js/app.js', 'public/js').sass('resources/sass/app.scss', 'public/css').purgeCss();
登錄后復制

7. 隊列

Laravel 隊列就像你的 CPU 一樣工作。 每當你的計算機處理一項任務時,它都會以最有效的方式執行,而不會降低用戶體驗的質量。 這意味著當你渲染文件或執行資源密集型操作時,你的 CPU 會確保你仍有剩余的處理能力用于其他任務,直到達到其限制。

例如,當用戶注冊到網站時,我們必須在后端執行許多操作,例如存儲用戶信息、發送激活郵件、發送歡迎郵件等。如果我們只是發送一封郵件(沒有隊列),那么它會大約需要 4-5 秒。并且用戶必須等到請求。因此,對于隊列,我們只需要在執行所需的驗證并顯示用戶成功消息后將操作推送到隊列中。之后,我們只需要在隊列執行時處理基本的事務。

簡單的例子是:

  • 發送電子郵件
  • 下載文件
  • 上傳文件

這些任務不需要用戶看到,可以作為后臺進程完成。

Laravel 還有幾個隊列驅動程序支持文檔,并為每個文檔提供獨特的解決方案,例如 Horizon,一個監控隊列系統的儀表板。

8. 快速緩存或會話驅動程序

為了提高 Laravel 應用程序的性能,我們可以存儲會話并將它們緩存在 RAM 中。 Memcached 是最好和最快的緩存和會話驅動程序。 Laravel 可以靈活地將一個緩存/會話驅動器切換到另一個。

對于會話驅動,我們可以在 config/session.php 中更改驅動鍵,對于緩存,我們可以在 config/cache.php 文件中更改驅動鍵。

9. 數據庫索引

當我們談論提高應用程序的性能時,我們會遵循 Laravel 中的許多實踐,例如緩存、數據加載、資產縮小等。但是還有一件事可以幫助我們提高性能,即數據庫索引。 這基本上是一種數據庫級技術。

在技術實現的角度看,數據庫索引是基于數據庫表的一個或多個列的數據結構。索引背后的主要思想是加快數據檢索。它有助于輕松定位數據,而無需在每次訪問數據庫時遍歷每一行。

使用列,索引有助于最小化處理的每個查詢的磁盤訪問。使數據庫索引成為一種強大的數據庫優化技術還可以提高數據庫的整體性能。

在 Laravel 中,我們可以使用遷移來創建索引。下面是示例:

Schema::create(‘users’, function (Blueprint $table) {    $table->string(’email’)->index();});
登錄后復制

10. 利用 JIT 編譯器

PHP 是一種計算機機器和服務器端語言。它本身不理解 PHP 代碼。通常,程序員使用編譯器將代碼編譯成字節碼并解釋 PHP 代碼。程序編譯過程會影響 Laravel 應用程序的性能和用戶體驗。所以,Laravel 程序員可以使用 Zend Engine 自帶的即時編譯器來快速編譯代碼。

11. 壓縮圖像

如果你的項目中包含許多圖像,你應該壓縮所有圖像以優化性能。
有一些方法可以進行優化。
但是不同的圖像需要不同的工具來保持圖像的質量和分辨率。

如果你使用 Laravel Mix,建議在編譯圖像時使用像 ImageMin 這樣的 NPM 包。
對于非常大的圖片,先試試 TinyPNG 壓縮圖片,然后再用 ImageMin 盡量壓縮。

12. 視圖緩存

另一個方面是視圖緩存。
視圖緩存存儲編譯后的的 Blade 模板以提高項目的速度。
你可以使用下面的 artisan 命令手動編譯所有視圖并優化性能:

php artisan view:cache
登錄后復制

上傳新代碼時記得清除緩存;否則,Laravel 將使用你的舊視圖,你將花費大量時間嘗試解決此問題。運行以下命令清除視圖緩存:

php artisan view:clear
登錄后復制

13. 刪除未使用的服務

你可以使用 Laravel 提供的服務容器框架輕松地注入服務。你只需在 config/app.php 文件中的 providers[] 數組中添加服務的名稱。

但同時,你應該只打開你正在使用的那些服務。應停止所有其他未使用的服務。

你可以通過在 config/app.php 文件中注釋掉這些服務來停止這些服務。這將減少你的應用程序啟動所需的時間并提高其性能

14. 使用 CDN 加載靜態內容

CDN 是在全球范圍內加載靜態內容的好方法。如果你的應用程序越來越流行,你可能需要為你的應用程序使用 CDN 服務

讓我舉一個簡單的例子,你在美國的服務器上托管了你的應用程序。現在,如果你有來自印度的請求,你需要很長時間才能為該請求提供內容。

為了解決這個問題,CDN 應運而生。 CDN 可以幫你緩存多個靜態頁面?,F在你的請求將首先到達 CDN,如果內容存在于 CDN 中,則直接提供頁面。這極大地提高了你的內容服務速度以及最終用戶體驗。

15. 壓縮 CSS 和 JS

在生產環境中實際捆綁這些文件之前,你應該始終壓縮 CSS 和 JavaScript 文件。 這將增強你的用戶體驗并減少 HTTP 調用。 這是一個很棒的 Laravel 性能優化技巧。

有多種工具可用于壓縮這些文件并將它們捆綁為單個文件。 你可以使用 Laravel-packer,它允許你打包和壓縮你的 CSS 和 JavaScript 代碼。 如果需要,你還可以調整圖像大小以生成縮略圖。

16. 移除開發依賴

首次安裝 Laravel 或 composer 時,通常會默認將開發依賴項注入到你的系統中。 雖然這些依賴項確實有助于構建你的網站,但當你的網站啟動并運行時,你不需要這些依賴項。

你可以通過 Artisan 輸入這個簡單的命令來刪除這些依賴項:

composer install --prefer-dist --no-dev -o
登錄后復制

登錄后復制

注意: 開發依賴項不同于運行時所需的依賴項。 不要刪除運行時依賴項,因為這可能會影響你網站的性能,甚至會導致你網站的某些部分崩潰。

17. 將Lumen用于小型項目

有時開發小型應用程序(例如移動或 Angular 應用程序)不需要使用像 Laravel 這樣的全棧框架。 在這種情況下,請考慮改用 Lumen。

Lumen 是由 Laravel 的同一創建者開發的微框架。 就像 Laravel 的輕量級版本一樣,Lumen 是關于微服務的速度和性能的。 在構建 Web 應用程序時,它需要最少的設置和替代路由參數,從而加快開發過程。

例如,Lumen 每秒可以處理 100 個請求。 你還可以集成來自第三方的工具或軟件包以獲得新功能。 此外,Lumen 支持所有平臺并允許你升級到 Laravel。

18. 限制包含的庫

Laravel 讓你可以自由添加任意數量的庫。 雖然這是一個很棒的功能,但添加大量庫會給應用程序的性能帶來很大壓力。 它還會影響整個用戶體驗。

因此,掃描代碼中當前使用的所有庫數據至關重要。 你可以在 config/app.php 文件中找到這些庫。 在檢查庫時,刪除你知道對你不再有用的庫。

查看 composer.json 中不需要的依賴項也是一個好辦法。

感謝你們的閱讀!

原文地址:https://devdojo.com/techvblogs/how-to-op…

譯文地址:https://learnku.com/laravel/t/69775

贊(0)
分享到: 更多 (0)
?
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
亚洲人成网站18禁止大| 青草国产超碰人人添人人碱| 日韩精品专区AV无码| 小宝贝荡货啊用力水湿AⅤ视频| 亚洲色偷偷色噜噜狠狠99网| 99久久人妻无码精品系列| 丰满人妻被中出中文字幕| 好男人在在线社区WWW在线影院| 裸睡时一自慰不小心就滑进去啦 | 国色天香在线视频免费观看| 六月丁香婷婷色狠狠久久| 日本适合18岁以上的护肤品| 性高朝久久久久久久3小时| 一本大道香蕉久中文在线播放| X姓女RAPPER| 国产伦精品一区二区三区免费| 久久久久精品无码专区| 青春草无码精品视频在线观看| 无码精品A∨在线观看| 亚洲一区精品无码色成人| YY8090韩国理伦片在线| 国产伦精品一区二区三区免费| 久久人人爽人人爽人人片AV高清 | 精品久久久无码中文字幕一丶 | 抖抈APP入口免费| 极度另类FREESEX强行真实| 男人激烈吮乳吃奶视频免费| 四川老妇山边性对白| 亚洲人成人网站色WWW| MM1313亚洲精品无码久久| 国产九九99久久99大香伊| 久久夜色精品国产| 日韩精品无码一区二区三区四区| 亚洲AV无码专区在线电影天堂 | 亚洲最大的成人网站| 部长来家里喝酒日剧叫什么| 国内老熟妇对白HDXXXX| 女人和拘做受A级毛片| 玩两个丰满老熟女| 一区二区三区在线 | 网站| 成色好的Y31S标准版| 精品国产一区二区三区无码蜜桃| 欧美人禽猛交乱配1| 午夜影视啪啪体验区入口 | 狠狠色噜噜狠狠狠狠色综合久AV| 女技师强制高潮18XXXX按摩| 无码纯肉视频在线观看喷水| 有人有在线观看的片资源| 丰满人妻熟妇乱又伦精品 | 久久自己只精产国品| 少妇18p一区二区三区| 亚洲日韩中文字幕日本| 边摸边吃奶又黄又激烈视频| 狠狠躁狠狠躁东京热无码专区| 欧美性XXXX极品少妇| 亚洲 欧美 中文 日韩AⅤ| 50岁露脸老熟女88AV| 国产精品涩涩涩视频网站| 噜噜私人影片在线看片| 双乳被一左一右吃着的小说| 一本到无码AV专区无码| 非洲黑人最猛性XXXX交| 久久久久国产精品免费免费搜索| 日韩精品一区二区三区色欲AV| 亚洲人成在线观看无码| 成人白浆超碰人人人人| 精品亚洲成a人无码成a在线观看| 日本BBWW高潮BBWR| 亚洲精品美女久久7777777| 被多个强壮的黑人灌满精| 精品国产乱码久久久久久蜜桃| 人妻无码久久精品| 亚洲精品中文字幕乱码三区| 差差差很疼视频无掩丰富| 精品无码久久久久成人漫画| 日本少妇XXX做受| 亚洲欧洲国产综合AⅤ无码| 成人AV无码乱码在线观看无码| 精品无码久久久久久久久久| 日韩精品成人无码专区免费| 亚洲熟女一区二区三区| 嗯~啊哈好深好骚啊哼| 久久婷婷色综合老司机| 天天爱天天做天天爽| 中年国产丰满熟女乱子正在播放| 国产极品美女高潮无套在线观看| 蜜桃av秘 无码一区二区三区| 无码网站天天爽免费看视频| 97久久久精品综合88久久| 国精产品W灬源码1H855.C| 人妻丰满被色诱中文字幕| 亚洲欧美日韩久久精品| 丰满人妻无码使劲张开双腿AV| 巨大黑人XXXXX高潮| 无码人妻AV一区二区三区蜜臀| 92国产精品午夜福利无毒不卡| 国产在线无码精品无码| 欧美又粗又大XXXXBBBB疯狂| 亚洲乱码一区AV春药高潮图片| 丁香花在线视频完整版| 老牛精品亚洲成AV人片| 无线乱码A区B区C区D| FREE东北女人自拍HD| 精品国产午夜福利在线观看| 日韩精品一区二区视频| 岳打开双腿开始配合交换| 国产裸拍裸体视频在线观看| 欧美一级内射黑人内射| 亚洲男人第一AV天堂| 夫妻毛片盗摄国产内射| 蜜桃av中文字幕在线| 亚洲AV蜜桃永久无码精品| 被CAO的合不拢腿| 久久人人爽人人爽人人片AV不| 无码内射成人免费喷射| FREE护士XXXXⅩONHD| 久别的草原在线看电视剧| 天堂8在/线中文在线资源8| 99精品国产在热久久无毒不卡 | 试看20分钟做受| 18禁男女爽爽爽午夜网站免费| 国色精品卡一卡2卡3卡4卡免费| 日本午夜精品理论片A级APP发| 一区三区四区产品乱码| 国产人成无码视频在线软件 | 用舌头去添高潮无码AV在线观看| 国产女人18毛片水真多1| 人妻免费久久久久久久了| 亚洲综合一区自偷自拍| 国产狂喷水潮免费网站WWW| 人妻人人澡人人添人人爽| 野花日本大全免费观看版动漫| 国产精品高潮呻吟久久AV| 欧洲熟妇色XXXXⅩ欧洲老妇色 | 亚洲国产精品久久久就秋霞| 公玩弄年轻人妻HD| 欧美成人精品1314www| 亚洲人成人无码.WWW石榴| 国产成人午夜性A一级毛片老女人| 欧美精品一区二区| 亚洲一卡2卡3卡4卡5卡6卡| 国产精华精华液一二三区别| 欧洲美熟女乱又伦AV曰曰| 一边下奶一边吃面膜视频讲解图片| 国产免费无码一区二区视频| 日本伦奷在线播放| 中文字幕日本乱码仑区在线| 韩国青草无码自慰直播专区| 色综合天天综合狠狠爱_| 99精品久久久久久久婷婷| 中文字幕韩国三级理论无码| 国产精品毛片无遮挡| 人妻无码久久精品| 中国亚州女人69内射少妇| 激情综合色综合久久综合| 四虎影视永久无码精品| EEUSS影院免费最电影| 久久久久久久精品成人热蜜桃| 小寡妇好紧进去了好大看视频| 差差差无掩盖30分钟79集| 免费看又黄又爽又猛的视频| 亚洲精品国产成人| 国产精品99久久久久久猫咪| 人妻少妇一级毛片内射一牛影视| 浴室人妻的情欲HD三级| 狠狠色伊人亚洲综合网站野外| 少妇熟女视频一区二区三区| FREEⅩXX性欧美HD丝袜| 久久亚洲美女精品国产精品| 亚洲AV伊人久久青青草原| 国产A三级久久精品| 成人麻豆精品激情视频在线观看| 男男黄Gay片免费网站www| 亚洲在AV人极品无码网站| 国精品午夜福利视频不卡| 天天AV天天爽无码中文| 成人AV片无码免费网站| 70歳の熟女セックス| 狠色狠色狠狠色综合久久 | 99久久久精品免费观看国产| 精品无码国产污污污免费网站 | 欧美视频一区二区图文| 影音先锋手机AV资源站| 精品久久久久久综合日本| 小寡妇一夜要了六次| 国产WW久久久久久久久久| 日本丰满老妇BBB| 99久久无码一区人妻A黑| 老头猛挺进小雯的体内视频| 亚洲区激情区无码区| 国内精品久久人妻无码| 无码精品A∨在线观看中文| 恶毒美人长批后被宿敌爆炒了| 人妻激情乱人伦视频| 69国产成人综合久久精品| 军人暴力性强迫RAPE| 亚洲色欲久久久久综合网| 好男人好资源在线观看免费视频| 无套内谢孕妇毛片免费看看| 国产成人精品一区二三区|