Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 欧美激情毛片,在线免费观看日本视频,日本特黄特色

          整合營(yíng)銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          當(dāng)您在瀏覽器中輸入網(wǎng)址時(shí)會(huì)發(fā)生什么?

          當(dāng)您在瀏覽器中輸入網(wǎng)址時(shí)會(huì)發(fā)生什么?

          0、先問個(gè)問題

          若客戶提出一個(gè)質(zhì)量屬性要求,要實(shí)現(xiàn)一個(gè)Web查詢,性能200毫秒以內(nèi),請(qǐng)問這個(gè)要求高還是低?

          對(duì)一個(gè)web系統(tǒng)來說,200毫秒是一個(gè)比較高的性能。

          憑啥這么說,你要是做過架構(gòu)的話,就明白這個(gè)道理。

          作為架構(gòu)師,必須了解完整過程,每一個(gè)細(xì)節(jié)。

          你應(yīng)該能把整個(gè)系統(tǒng)分解成若干個(gè)環(huán)節(jié),并且各環(huán)節(jié)的細(xì)節(jié)你都能了解。這個(gè)環(huán)節(jié)是硬的還是軟的?會(huì)不會(huì)影響這個(gè)部分的性能開銷?

          看下圖,能看到你從發(fā)起請(qǐng)求,一直到頁(yè)面呈現(xiàn)完了之后的4個(gè)主要環(huán)節(jié)。

          要細(xì)分的話,其實(shí)當(dāng)中還有更多的環(huán)節(jié)。

          網(wǎng)絡(luò)大概走多少毫秒,差不多50ms,環(huán)節(jié)取決于網(wǎng)絡(luò)環(huán)境,要是跨國(guó)的話,從中國(guó)到美國(guó),可能要上百。

          這個(gè)是系統(tǒng)架構(gòu)改變不了的。

          那就是200已經(jīng)去掉了50,或者100,剩下100多可以用。

          收到數(shù)據(jù)之后,需要瀏覽器渲染出來,又需要多長(zhǎng)時(shí)間呢?

          這個(gè)時(shí)間不確認(rèn),看渲染結(jié)果復(fù)不復(fù)雜,有沒ajax再次請(qǐng)求這類情況。

          可能簡(jiǎn)單的,10幾毫秒,復(fù)雜的更長(zhǎng)。

          右邊從Web服務(wù)器到應(yīng)用服務(wù)器、從應(yīng)用服務(wù)器到數(shù)據(jù)庫(kù)DB之間,還有性能開銷。

          數(shù)據(jù)庫(kù)檢索出來是一個(gè)值,這個(gè)值到了你的開發(fā)語言里面,經(jīng)過底層框架,需要做數(shù)據(jù)類型轉(zhuǎn)換,變成程序里的一個(gè)對(duì)象。

          一個(gè)架構(gòu)師,就要學(xué)會(huì)區(qū)分,哪些是架構(gòu)能左右的,能夠改善的,哪些是我不能解決的,最后在你能解決的部分里想辦法

          你都了解了之后,你就能專業(yè)地跟客戶說,這個(gè)200毫秒我做不到。

          或者說在什么條件下,我能做到。

          一個(gè)事情,只有你都了解的情況下,才能給出一個(gè)可行方案。

          01、當(dāng)您在瀏覽器中輸入 URL 時(shí)會(huì)發(fā)生什么?

          讓我們一步步看一下整個(gè)過程:

          1. 用戶在瀏覽器中輸入 URL 并按 下Enter鍵時(shí),我們需要做的第一件事是將 URL 轉(zhuǎn)換為 IP 地址。映射通常存儲(chǔ)在緩存中,因此瀏覽器會(huì)在多層緩存中查找 IP 地址:瀏覽器緩存、操作系統(tǒng)緩存、本地緩存和 ISP 緩存。如果瀏覽器在緩存中找不到該映射,則會(huì)請(qǐng)求 DNS(域名系統(tǒng))解析器進(jìn)行解析。
          2. 如果在任何緩存中都找不到 IP 地址,則瀏覽器將前往 DNS 服務(wù)器進(jìn)行遞歸 DNS 查找,直到找到 IP 地址。
          3. 現(xiàn)在我們有了服務(wù)器的IP地址,瀏覽器向服務(wù)器發(fā)送HTTP請(qǐng)求。為了安全訪問服務(wù)器資源,我們應(yīng)該始終使用 HTTPS。它首先通過 TCP 3 次握手與服務(wù)器建立 TCP 連接。然后它將公鑰發(fā)送給客戶端。客戶端使用公鑰加密會(huì)話密鑰并發(fā)送給服務(wù)器。服務(wù)器使用私鑰來解密會(huì)話密鑰。客戶端和服務(wù)器現(xiàn)在可以使用會(huì)話密鑰交換加密數(shù)據(jù)。
          4. 服務(wù)器處理請(qǐng)求并發(fā)回響應(yīng)。

          對(duì)于成功的響應(yīng),狀態(tài)代碼為 200。

          響應(yīng)中有 3 部分:HTML、CSS 、 Javascript。

          瀏覽器渲染的順序:

          1. 瀏覽器解析HTML并生成DOM樹。

          2. 解析 CSS 并生成 CSSOM 樹。

          3. 結(jié)合 DOM 樹和 CSSOM 樹來構(gòu)建渲染樹。

          4. 節(jié)點(diǎn)布局

          5. 最后頁(yè)面渲染,瀏覽器將內(nèi)容呈現(xiàn)并顯示給用戶。

          02、用一張圖解釋 8 種流行的網(wǎng)絡(luò)協(xié)議

          1. HTTP(超文本傳輸協(xié)議)HTTP 是一種用于獲取 HTML 文檔等資源的協(xié)議。它是 Web 上任何數(shù)據(jù)交換的基礎(chǔ),是一種客戶端-服務(wù)器協(xié)議。
          2. HTTP/3HTTP/3 是 HTTP 的下一個(gè)主要修訂版。它運(yùn)行在 QUIC 上,這是一種專為移動(dòng)互聯(lián)網(wǎng)使用而設(shè)計(jì)的新傳輸協(xié)議。它依賴于 UDP 而不是 TCP,從而實(shí)現(xiàn)更快的網(wǎng)頁(yè)響應(yīng)。VR 應(yīng)用程序需要更多帶寬來渲染虛擬場(chǎng)景的復(fù)雜細(xì)節(jié),并且可能會(huì)從遷移到由 QUIC 提供支持的 HTTP/3 中受益。
          3. HTTPS(安全超文本傳輸協(xié)議)HTTPS 擴(kuò)展了 HTTP 并使用加密來實(shí)現(xiàn)安全通信。
          4. WebSocketWebSocket 是一種通過 TCP 提供全雙工通信的協(xié)議。客戶端建立WebSocket來接收來自后端服務(wù)的實(shí)時(shí)更新。與總是“拉取”數(shù)據(jù)的 REST 不同,WebSocket 允許“推送”數(shù)據(jù)。在線游戲、股票交易和消息傳遞應(yīng)用程序等應(yīng)用程序利用 WebSocket 進(jìn)行實(shí)時(shí)通信。
          5. TCP(傳輸控制協(xié)議)TCP 旨在通過互聯(lián)網(wǎng)發(fā)送數(shù)據(jù)包,并確保通過網(wǎng)絡(luò)成功傳送數(shù)據(jù)和消息。許多應(yīng)用層協(xié)議構(gòu)建在 TCP 之上。
          6. UDP(用戶數(shù)據(jù)報(bào)協(xié)議)UDP 直接將數(shù)據(jù)包發(fā)送到目標(biāo)計(jì)算機(jī),無需先建立連接。UDP 通常用于時(shí)間敏感的通信,其中偶爾丟棄數(shù)據(jù)包比等待更好。語音和視頻流量通常使用此協(xié)議發(fā)送。
          7. SMTP(簡(jiǎn)單郵件傳輸協(xié)議)SMTP 是一種用于將電子郵件從一個(gè)用戶傳輸?shù)搅硪粋€(gè)用戶的標(biāo)準(zhǔn)協(xié)議。
          8. FTP(文件傳輸協(xié)議)FTP 用于在客戶端和服務(wù)器之間傳輸計(jì)算機(jī)文件。它具有單獨(dú)的控制通道和數(shù)據(jù)通道連接。

          TML究竟算不算是一門編程語言,這是爭(zhēng)執(zhí)已久的話題。其實(shí),從本質(zhì)來講,HTML確實(shí)算不上是一門編程語言。

          HTML全稱,HyperText Markup Language。字面理解,HTML就是一種超文本語言,何謂超文本,就是其用途和意義已經(jīng)超越了純文本。因?yàn)椋琀TML重新定義了文本的格式,而且HTML不僅僅只有文本還包括音視頻。

          相比其他語言,HTML的字面意義更容易理解,就是為了方便人類和機(jī)器閱讀。例如,我們常見的頭標(biāo)簽,輸入標(biāo)簽,換行符等等,都是HTML中常見和常用的。此類標(biāo)簽不僅讓人類能夠輕松理解,而且對(duì)于電腦這種機(jī)器來說,也是很容理解的。

          HTML語言不具備很強(qiáng)的邏輯性。基于此,很多程序員都不承認(rèn)HTML是一門編程語言。不像其他語言,例如Java,C++,Python等流行語言,這些語言都帶有很強(qiáng)的邏輯和流程控制功能。

          不僅僅是HTML無邏輯性和流程控制的問題,同時(shí)HTML還是缺乏靈活性的,因?yàn)镠TML都是按照W3C的標(biāo)準(zhǔn)限定死的語言,主要用于規(guī)范HTML文檔的書寫格式。不像其他語言,用戶可以自定義的地方有很多,千變?nèi)f化。

          HTML不被承認(rèn)是一門編程語言,最重要的一點(diǎn)是因?yàn)椋琀TML不能按照人類的設(shè)計(jì)對(duì)一件工作進(jìn)行重復(fù)的循環(huán),直至得到讓人類滿意的答案。這一點(diǎn)最重要,其他語言都可以輕松做到。

          在編程語言方面的話,小編還是更為推崇c/c++的!雖然Java、Python熱度不斷上漲,但是作為編程界元老的C++依然具有其無可比擬的優(yōu)勢(shì),小編是一個(gè)有著7年工作經(jīng)驗(yàn)的架構(gòu)師,對(duì)于c++,自己有做資料的整合,一個(gè)完整學(xué)習(xí)C語言c++的路線,學(xué)習(xí)資料和工具。可以進(jìn)我的群7418,18652領(lǐng)取,免費(fèi)送給大家。希望你也能憑自己的努力,成為下一個(gè)優(yōu)秀的程序員!

          當(dāng)然,我們也不能否認(rèn)HTML的重要性,作為web領(lǐng)域的重要元老,在當(dāng)前時(shí)候,前端工程師還是有相當(dāng)大的發(fā)展前途的!

          在程序員的眼中,HTML是算不上一門編程語言的。雖然如此,但是HTML在WEB領(lǐng)域的重要作用遠(yuǎn)遠(yuǎn)超越其他任何編程語言,瀏覽器打開i一個(gè)網(wǎng)頁(yè)第一步就要解析一個(gè)HTML的DOM樹,越簡(jiǎn)單越重要。

          元芳,你怎么看呢?

          么是JS延遲加載?

          JS延遲加載,也就是等頁(yè)面加載完成之后再加載JavaScript文件

          為什么讓JS實(shí)現(xiàn)延遲加載?

          js的延遲加載有助于提高頁(yè)面的加載速度。

          Js延遲加載的方式有哪些?一般有以下幾種方式:

          ·defer屬性

          ·async屬性

          ·動(dòng)態(tài)創(chuàng)建DOM方式

          ·使用jQuery的getScript方法

          ·使用setTimeout延遲方法

          ·讓JS最后加載

          1、defer屬性

          HTML 4.01為<script>標(biāo)簽定義了defer屬性。標(biāo)簽定義了defer屬性元素中設(shè)置defer屬性,等于告訴瀏覽器立即下載,但延遲執(zhí)行標(biāo)簽定義了defer屬性。

          用途:表明腳本在執(zhí)行時(shí)不會(huì)影響頁(yè)面的構(gòu)造。也就是說,腳本會(huì)被延遲到整個(gè)頁(yè)面都解析完畢之后再執(zhí)行在<script>元素中設(shè)置defer屬性,等于告訴瀏覽器立即下載,但延遲執(zhí)行

          <!DOCTYPE html>
          <html>
          <head>
          	<script src="test1.js" defer="defer"></script>
          	<script src="test2.js" defer="defer"></script>
          </head>
          <body>
          <!--這里放內(nèi)容-->
          </body>
          </html>

          說明:雖然<script>元素放在了<head>元素中,但包含的腳本將延遲瀏覽器遇到</html>標(biāo)簽后再執(zhí)行HTML5規(guī)范要求腳本按照它們出現(xiàn)的先后順序執(zhí)行。在現(xiàn)實(shí)當(dāng)中,延遲腳本并不一定會(huì)按照順序執(zhí)行defer屬性只適用于外部腳本文件。支持HTML5的實(shí)現(xiàn)會(huì)忽略嵌入腳本設(shè)置的defer屬性

          2、async屬性

          HTML5 為<script>標(biāo)簽定義了async屬性。與defer屬性類似,都用于改變處理腳本的行為。同樣,只適用于外部腳本文件。標(biāo)簽定義了async屬性。與defer屬性類似,都用于改變處理腳本的行為。同樣,只適用于外部腳本文件。

          目的:不讓頁(yè)面等待腳本下載和執(zhí)行,從而異步加載頁(yè)面其他內(nèi)容。異步腳本一定會(huì)在頁(yè)面 load 事件前執(zhí)行。不能保證腳本會(huì)按順序執(zhí)行

          <!DOCTYPE html>
          <html>
          	<head>
          		<script src="test1.js" async></script>
          		<script src="test2.js" async></script>
          	</head>
          <body>
          <!--這里放內(nèi)容-->
          </body>
          </html>

          async和defer一樣,都不會(huì)阻塞其他資源下載,所以不會(huì)影響頁(yè)面的加載。

          缺點(diǎn):不能控制加載的順序

          3、動(dòng)態(tài)創(chuàng)建DOM方式

          //這些代碼應(yīng)被放置在</ body>標(biāo)簽前(接近HTML文件底部)
          <script type="text/javascript">
          	function downloadJSAtOnload() {
          		varelement=document .createElement("script");
          		element.src="defer.js";
          		document.body.appendChild(element);
          	}
          	if (window. addEventListener)
          		window.addEventListener("load" ,downloadJSAtOnload, false);
          	else if (window.attachEvent)
          		window.attachEvent("onload", downloadJSAtOnload) ;
          	else
          		window. onload=downloadJSAtOnload;
          </script>

          4、使用jQuery的getScript()方法

          $.getScript("outer.js" , function(){	//回調(diào)函數(shù),成功獲取文件后執(zhí)行的函數(shù)
          	console.log(“腳本加載完成")
          });

          5、使用setTimeout延遲方法的加載時(shí)間延遲加載js代碼,給網(wǎng)頁(yè)加載留出更多時(shí)間

          <script type="text/javascript" >
          	function A(){
          		$.post("/1ord/1ogin" ,{name:username,pwd:password},function(){
          			alert("Hello");
          		});
          	}
          	$(function (){
          		setTimeout('A()', 1000);	//延遲1秒
          	})
          </script>

          6、讓JS最后加載

          把js外部引入的文件放到頁(yè)面底部,來讓js最后引入,從而加快頁(yè)面加載速度例如引入外部js腳本文件時(shí),如果放入html的head中,則頁(yè)面加載前該js腳本就會(huì)被加載入頁(yè)面,而放入body中,則會(huì)按照頁(yè)面從上倒下的加載順序來運(yùn)行JavaScript的代碼。所以我們可以把js外部引入的文件放到頁(yè)面底部,來讓js最后引入,從而加快頁(yè)面加載速度。

          上述方法2也會(huì)偶爾讓你收到Google頁(yè)面速度測(cè)試工具的“延遲加載javascript”警告。所以這里的解決方案將是來自Google幫助頁(yè)面的推薦方案。

          //這些代碼應(yīng)被放置在</body>標(biāo)簽前(接近HTML文件底部)
          
          <script type="text/javascript">
          	function downloadJSAtonload() {
          		var element=document.createElement("script");
          		element.src="defer.js";
          		document.body.appendChild(element);
          	}
          	if (window.addEventListener)
          		window.addEventListener("load", downloadJSAtOnload, false);
          	else if (window.attachEvent )
          		window.attachEvent("onload", downloadJSAtonload);
          	else window.onload=downloadJSAtOnload;
          </script>

          這段代碼意思等到整個(gè)文檔加載完后,再加載外部文件“defer.js”。

          使用此段代碼的步驟:

          6.1)復(fù)制上面代碼

          6.2)粘貼代碼到HTML的標(biāo)簽前 (靠近HTML文件底部)

          6.3)修改“defer.js”為你的外部JS文件名

          6.4)確保文件路徑是正確的。例如:如果你僅輸入“defer.js”,那么“defer.js”文件一定與HTML文件在同一文件夾下。

          注意:

          這段代碼直到文檔加載完才會(huì)加載指定的外部js文件。因此,不應(yīng)該把那些頁(yè)面正常加載需要依賴的javascript代碼放在這里。而應(yīng)該將JavaScript代碼分成兩組。一組是因頁(yè)面需要而立即加載的javascript代碼,另外一組是在頁(yè)面加載后進(jìn)行操作的javascript代碼(例如添加click事件。


          主站蜘蛛池模板: 一区二区三区视频免费| 久久人妻内射无码一区三区 | 91大神在线精品视频一区| 日韩av无码一区二区三区| 国产精品高清一区二区人妖| 国产精品成人一区无码| 爆乳熟妇一区二区三区霸乳 | 国精产品一区一区三区有限公司| 精品久久综合一区二区| 国产不卡视频一区二区三区| 人妻体内射精一区二区三四| 国精产品一区一区三区有限公司| 97精品国产福利一区二区三区| 亚洲视频一区二区三区| 视频在线一区二区| 亚洲一区二区三区久久| 国产成人一区二区动漫精品| 亚洲av福利无码无一区二区| 韩国一区二区三区| 亚洲av无码一区二区三区网站| 成人免费一区二区无码视频| 国产一区三区二区中文在线| 无码日韩人妻av一区免费| 精品aⅴ一区二区三区| 国产综合无码一区二区色蜜蜜| 三上悠亚日韩精品一区在线 | 大屁股熟女一区二区三区| 韩国理伦片一区二区三区在线播放| 一区 二区 三区 中文字幕| 91一区二区视频| 中文字幕一区二区三区精华液| 国内精品视频一区二区三区| 人妻体体内射精一区二区| 久久精品无码一区二区日韩AV| 国内精品一区二区三区东京 | 免费看AV毛片一区二区三区| 色窝窝无码一区二区三区成人网站| 亚洲AV永久无码精品一区二区国产| 国产一区二区三区乱码网站| 日本不卡在线一区二区三区视频 | 无码一区二区三区|