本篇內(nèi)容主要講解“如何解決Laravel-Sail開發(fā)中hosts文件配置錯(cuò)誤導(dǎo)致應(yīng)用卡頓的問題”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“如何解決Laravel-Sail開發(fā)中hosts文件配置錯(cuò)誤導(dǎo)致應(yīng)用卡頓的問題”吧!
創(chuàng)新互聯(lián)建站堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站建設(shè)、網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的本溪網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
今天將一個(gè)項(xiàng)目的源碼拉下來,使用新的 Laravel-Sail 開發(fā)環(huán)境,之前的 Homestead 開發(fā)環(huán)境現(xiàn)在僅做備用了。剛開始一切都很順利,依賴安裝、容器啟動(dòng)、數(shù)據(jù)遷移,然后我高高興興的將開發(fā)用的域名配置到 hosts 文件中:
127.0.0.1 devocus.test
打開瀏覽器,訪問: http://devocus.test:8016
,本以為一切順利,但是卻發(fā)現(xiàn)頁面一直處于加載狀態(tài),隔了差不多 30 秒才將完整的界面加載出來,我百思不得其解,其他幾個(gè)項(xiàng)目我都是用的 Laravel-Sail 開發(fā)環(huán)境,幾乎都是秒開,這個(gè)項(xiàng)目是腫么了?
然后我打開瀏覽器開發(fā)者工具,發(fā)現(xiàn)所有的請求都需要 30 秒以上,難道遇到了文件 IO 問題?但是我項(xiàng)目是放在 Ubuntu 子系統(tǒng)中的呀。網(wǎng)絡(luò)問題?那其他幾個(gè)項(xiàng)目又完全正常呀。我嘗試著各種可能的解決辦法,改文件權(quán)限、關(guān)閉ladder、刪除并重新創(chuàng)建容器等等,一頓折騰下來,毫無結(jié)果。
于是安裝了 Telescope,查看每個(gè)請求的詳細(xì)情況,打開 Telescope 速度也非常慢,我等待了大概一分鐘,Telescope 的界面終于加載出來了。但是查詢結(jié)果令我非常意外:
Telescope 顯示,每個(gè)請求的處理速度都很快,數(shù)據(jù)查詢也很快,我佛了…
于是找同事的電腦試一下,開發(fā)環(huán)境都是 Laravel-Sail 沒想到他的電腦上訪問也同樣十分緩慢,這直接將我們的思維引導(dǎo)到 “項(xiàng)目代碼有問題” 這個(gè)方向上,于是我花了一上午時(shí)間仔細(xì)對比檢查各種配置文件、env文件,升級了 laravel 以及各種依賴的版本。但是當(dāng)我每次滿懷期待的在瀏覽器打開應(yīng)用時(shí),還是卡的讓我懷疑人生,而且日志記錄一切正常。然后使用搜索引擎嘗試搜索這個(gè)問題的解決方案,中文搜索、英文搜索都沒有結(jié)果。一個(gè)上午過去了,還是沒有搞定這個(gè)問題,甚至一股絕望感涌上心頭。
最后還是決定去吃午飯,先讓自己放松下來。吃完飯回來的路上,我又一次思考這個(gè)問題,腦袋里各種搜索出來的答案一條一條閃過,突然一個(gè)單詞從我眼前“飛過”:hosts
。
回到工位上我打開電腦,想著先用 ip 直接訪問應(yīng)用看看情況,于是在瀏覽器輸入http://127.0.0.1:8016
,界面被急速打開,我大概有點(diǎn)眉目了,于是打開 hosts 文件,想著換個(gè)域名試試:
# 127.0.0.1 devocus.test 127.0.0.1 ifocus-dev.test
然后打開瀏覽器,輸入http://ifocus-dev.test:8016
,應(yīng)用被快速打開,非常流暢,問題就這樣莫名其妙的解決了。
但是問題出在哪里呢?我再次打開 hosts 文件,仔細(xì)檢查,發(fā)現(xiàn)之前做過的同一個(gè)域名的解析靜靜地躺在 hosts 文件里面,我將開發(fā)環(huán)境由 Homestead 遷移到 Laravel-Sail時(shí),忘記修改 hosts 文件了:
... 192.168.10.10 devocus.test ... # 127.0.0.1 devocus.test 127.0.0.1 ifocus-dev.test
在 hosts 文件中,同一個(gè)域名解析到兩個(gè) ip 會(huì)發(fā)生什么情況呢?我去搜索引擎上搜索了一下,找到了答案:
電腦在hosts文件中是由上往下查找 IP,相同的域名取第一個(gè) IP,如果第一個(gè)IP受阻,那么會(huì)轉(zhuǎn)向第二個(gè)IP,乃至第N個(gè),但是這種方式達(dá)不到負(fù)載均衡的效果,但可以增大打開網(wǎng)站的幾率。
由于我將 devocus.test
解析到了兩個(gè)IP地址:192.168.10.10 及127.0.0.1,當(dāng)我在瀏覽器中打開http://devocus.test
時(shí),首先訪問 192.168.10.10,但是由于我的 Homestead 是關(guān)閉狀態(tài),所以肯定訪問失敗,這個(gè)過程持續(xù)30秒左右,然后系統(tǒng)又去 hosts 文件中繼續(xù)查找其他的IP,找到并訪問 127.0.0.1 時(shí)才打開了網(wǎng)頁。因?yàn)槊總€(gè)請求都要經(jīng)過這個(gè)過程,所以我會(huì)感覺到系統(tǒng)非常的卡頓。至此,困擾我的問題得于解決。
所以大家在開發(fā)項(xiàng)目時(shí),一定要多留意這些細(xì)微的小問題,小問題很多時(shí)候也會(huì)造成巨大的困擾,即使我這樣自以為是的老手,也會(huì)掉入深坑。軟件行業(yè)真是一個(gè)需要不斷踩坑、不斷挖坑、不斷填坑的實(shí)踐性行業(yè)。
不過我想了想,要是我當(dāng)時(shí) Homestead 環(huán)境是打開的,我可能會(huì)更加的困擾。
到此,相信大家對“如何解決Laravel-Sail開發(fā)中hosts文件配置錯(cuò)誤導(dǎo)致應(yīng)用卡頓的問題”有了更深的了解,不妨來實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!