摘要:確定的代碼位于的中這樣一看,其實(shí)就是將文件刪除,而這個(gè)是會(huì)自動(dòng)生成的一個(gè)數(shù)組文件,這里指定了每個(gè)和的位置和命名空間的全路徑等,在啟動(dòng)項(xiàng)目的時(shí)候,可以直接讀取使用。所以這個(gè)命令可以拆為兩步層面優(yōu)化加載速度刪除很清晰。
原文:https://www.codecasts.com/blo...
在部署 Laravel 項(xiàng)目的時(shí)候,我們經(jīng)常會(huì)使用到一個(gè)提升性能的命令:
php artisan optimize
本文來(lái)看看這個(gè)命令執(zhí)行背后的源碼:
首先我們可以使用編輯器搜 OptimizeCommand,應(yīng)該就可以找到該命令源碼的所在:
IlluminateFoundationConsoleOptimizeCommand,我們關(guān)注其中的 fire() 方法:
public function fire() { $this->info("Generating optimized class loader"); if ($this->option("psr")) { $this->composer->dumpAutoloads(); } else { $this->composer->dumpOptimized(); } $this->call("clear-compiled"); }
fire() 方法,默認(rèn)情況下,會(huì)執(zhí)行$this->composer->dumpOptimized(),而這行代碼觸發(fā)的其實(shí)就是composer dump-autoload --optimize,源代碼可以在IlluminateSupportComposer 的 dumpOptimized() 找到:
public function dumpOptimized() { $this->dumpAutoloads("--optimize"); }
最后,optimize 命令還執(zhí)行了call("clear-compiled"),其實(shí)就是觸發(fā)php artisan clear-compiled,而很巧的是,我們也是可以直接使用編輯器搜ClearCompiledCommand 來(lái)找到源碼,位于 IlluminateFoundationConsoleClearCompiledCommand 中,這里的 fire() 方法其實(shí)關(guān)鍵的一步就是刪除了一下 cache 下的文件,我們來(lái)看:
public function fire() { $servicesPath = $this->laravel->getCachedServicesPath(); if (file_exists($servicesPath)) { @unlink($servicesPath); } $this->info("The compiled services file has been removed."); }
通過(guò)確定 $servicesPath 的位置,再使用 @unlink($servicesPath); 刪除。
確定 $servicesPath 的代碼 $this->laravel->getCachedServicesPath() 位于 IlluminateFoundationApplication 的 getCachedServicesPath 中:
public function getCachedServicesPath() { return $this->bootstrapPath()."/cache/services.php"; }
這樣一看,其實(shí)就是將 bootstrap/cache/services.php 文件刪除,而這個(gè) services.php 是 Laravel 會(huì)自動(dòng)生成的一個(gè)數(shù)組文件,這里指定了每個(gè) Providers 和 Facades 的位置和命名空間的全路徑等,在啟動(dòng) Laravel 項(xiàng)目的時(shí)候,可以直接讀取使用。
所以這個(gè)命令可以拆為兩步:
1.composer dump-autoload --optimize // composer 層面優(yōu)化加載速度 2.php artisan clear-compiled // 刪除 bootstrap/cache/services.php
很清晰。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/23120.html
摘要:原文來(lái)自在學(xué)習(xí)的時(shí)候,可能很多人接觸的第一個(gè)的命令就是,這樣我們就可以跑起第一個(gè)的應(yīng)用。本文來(lái)嘗試解讀一下這個(gè)命令行的源碼。 原文來(lái)自:https://www.codecasts.com/blo... 在學(xué)習(xí) Laravel 的時(shí)候,可能很多人接觸的第一個(gè) artisan 的命令就是:php artisan serve,這樣我們就可以跑起第一個(gè) Laravel 的應(yīng)用。本文來(lái)嘗試解讀一...
摘要:然而,本文的討論重點(diǎn),還是背后的源碼,是怎么做到這一步的。從哪開(kāi)始看源碼位于你還是可以使用編輯器搜,就可以看到源碼了。第三步序列化所有路由注冊(cè)映射關(guān)系,還是在的方法中上面的方法位于中的中。所以到這里,的源碼解讀就完成了。 學(xué) Laravel 和 Vuejs 你真應(yīng)該來(lái) codecasts.com ! Laravel ?route:cache 可以直接緩存路由文件,這樣其實(shí)可以在一定程度...
摘要:因?qū)嶋H項(xiàng)目需求,近日在開(kāi)發(fā)包的時(shí)候,發(fā)現(xiàn)設(shè)置屬性設(shè)置為時(shí),會(huì)導(dǎo)致在方法中注冊(cè)的無(wú)效。研究源碼在中注冊(cè)無(wú)效,但是在其他中注冊(cè)有效,說(shuō)明是其他問(wèn)題。所以切記如果準(zhǔn)備采用延遲加載時(shí),嚴(yán)禁進(jìn)行注冊(cè)等系列操作。嚴(yán)禁在延遲加載的注冊(cè)和。 因?qū)嶋H項(xiàng)目需求,近日在開(kāi)發(fā) laravel-database-logger 包的時(shí)候,發(fā)現(xiàn)設(shè)置 ServiceProvider defer 屬性設(shè)置為 true ...
摘要:添加路由在方法中,通過(guò)下面幾行代碼添加路由注意這個(gè)參數(shù),就是將這個(gè)文件的內(nèi)容附加在原來(lái)路由文件的后面,并不會(huì)將原來(lái)的路由清零。 學(xué) Laravel 和 Vuejs,你真應(yīng)該來(lái) codecasts.com ,有免費(fèi)高質(zhì)量視頻! 在 Laravel 5.2 的時(shí)候,官方給我們提供了 make:auth 命令,這個(gè)命令使得我們?cè)趫?zhí)行一條命令的情況下實(shí)現(xiàn)用戶注冊(cè)和登錄,忘記密碼,找回密碼的過(guò)程...
摘要:使用即時(shí)編譯器和都能輕輕松松的讓你的應(yīng)用程序在不用做任何修改的情況下,直接提高或者更高的性能,之前做個(gè)一個(gè)實(shí)驗(yàn),具體請(qǐng)見(jiàn)使用提升程序性能。 本文經(jīng)授權(quán)轉(zhuǎn)自 PHPHub 社區(qū) 說(shuō)明 性能一直是 Laravel 框架為人詬病的一個(gè)點(diǎn),所以調(diào)優(yōu) Laravel 程序算是一個(gè)必學(xué)的技能。 接下來(lái)分享一些開(kāi)發(fā)的最佳實(shí)踐,還有調(diào)優(yōu)技巧,大家有別的建議也歡迎留言討論。 這里是簡(jiǎn)單的列表: 配置信...
閱讀 2607·2021-09-26 10:17
閱讀 3230·2021-09-22 15:16
閱讀 2142·2021-09-03 10:43
閱讀 3268·2019-08-30 11:23
閱讀 3666·2019-08-29 13:23
閱讀 1310·2019-08-29 11:31
閱讀 3695·2019-08-26 13:52
閱讀 1401·2019-08-26 12:22