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
的2022年愿望是什么?
今年自己也定了個目標,我要寫16本編程的書。
同步開啟每天更新公眾號的任務。因為公眾號更新的內容也是我自己每天書里摘錄的一些內容。這樣也能夠堅持的把書寫下去。
那么,你今年的愿望又是什么呢?可以在留言下記錄下來哦~
面試中愛問的問題:網站請求的過程是怎樣的?
這個問題如果你如果有逛過一些編程社區,或者是看過一些編程網站,這個問題你會發現經常會出現。特別是新人去面試的過程中,也會經常遇到。在這里我也就簡單的寫寫我自己整理出來的筆記。希望對你的認識有所幫助。
答案:
一個Web應用程序一般都是由客戶端程序與服務端程序兩部分組成。其中,客戶端主要是指用戶和瀏覽器,用戶可以通過瀏覽器查找所需的資源,而這些資源則位于服務器上。瀏覽器是一個工具軟件,它主要有兩個作用:一是完成與服務端的交互,二是完成HTML(Hyper Text Mark-up Language,超文本標記語言,用來告訴瀏覽器怎樣給用戶展示內容)的解析,從而實現把用戶需要查看的資源信息以直觀的形式展現出來。服務端用來接收客戶端發來的請求,并對該請求進行處理,找到客戶端請求的資源,最后把查找到的資源返回給客戶端,這些資源主要包括HTML頁面、圖片、音頻、視頻、PDF文件等內容。
下圖2-1給出了最基本的頁面請求與響應的流程。
圖2-1頁面請求與響應
(1) 用戶通過瀏覽器輸入鏈接地址來請求所需的資源。
(2) 瀏覽器接受用戶的請求,并把該請求組裝成指定的格式發送給服務端,客戶端與服務端之間通過HTTP協議來完成具體的交互。其中請求的數據流中主要包含HTTP(Hypertext transfer protocol,超文本傳輸協議,建立在TCP/IP協議基礎上的一個協議,主要用來實現客戶端與服務端之間的通信)請求方法(GET或POST)、請求的網址(URL,全稱Uniform Resource Locator,統一資源定位符)以及請求的一些參數信息。(當然在把數據發送給服務器之前,首先需要根據網頁地址獲取服務器的IP地址,這就需要通過訪問DNS服務器來完成)。
(3) 服務器接收到客戶端發來的請求,并查找用戶所需要的資源。
(4) 服務器查找到用戶請求的資源后,把該資源返回給客戶端。
(5) 服務器通過把響應消息組裝成特定的消息格式后返回給客戶端,這個過程通過HTTP協議來完成。響應的數據流主要包含狀態碼(代表請求成功或失?。珻ontent-type(例如text、picture、HTML等),響應消息的內容(圖片或HTML格式的內容)。
瀏覽器對HTML進行解析后并把響應結果展現給用戶。
更多精彩文章,歡迎關注《琉憶編程庫》。
當你在瀏覽器輸入url到發起http請求,這過程到底發生了什么?其實整個流程如下:
當用戶輸入url,操作系統會將輸入事件傳遞到瀏覽器中,在這過程中,瀏覽器可能會做一些預處理,比如 Chrome 會根據歷史統計來預估所輸入字符對應的網站,例如輸入goog,根據之前的歷史發現 90% 的概率會訪問「www.google.com 」,因此就會在輸入回車前就馬上開始建立 TCP 鏈接甚至渲染了。
接著是輸入url之后,點擊回車,這時瀏覽器會對 URL 進行檢查,首先判斷協議,如果是 http 就按照 Web 來處理,另外還會對這個 URL 進行安全檢查
安全檢查完成之后,在瀏覽器內核中會先查看緩存,然后設置 UA 等 HTTP 信息,接著調用不同平臺下網絡請求的方法。
注意:
瀏覽器和瀏覽器內核是不同的概念,瀏覽器指的是 Chrome、Firefox,而瀏覽器內核則是 Blink、Gecko,瀏覽器內核只負責渲染,GUI 及網絡連接等跨平臺工作則是瀏覽器實現的
dns查詢ip
DNS,英文是Domain Name System,中文叫域名系統,是Internet的一項服務,他將域名和IP地址相互映射的一個分布式數據庫
假設用戶在瀏覽器中輸入的是www.google.com,大概過程:
如果輸入的是域名,則需要進行dns查詢,將域名解析成ip;
進行DNS查詢的主機或軟件叫做DNS解析器,用戶使用的工作站或電腦都屬于解析器。域名解析就是利用DNS解析器得到對應IP過程,解析器會向域名服務器進行查詢處理。
主要過程如下:
如果以上都沒有找到,則繼續往下向dns域名服務器查詢
注意,
域名查詢時有可能是經過了CDN調度器的(如果有cdn存儲功能的話)
而且,需要知道dns解析是很耗時的,因此如果解析域名過多,會讓首屏加載變得過慢,可以考慮dns-prefetch優化
tcp/ip請求
有了 IP 地址,就可以通過 Socket API 來發送數據了,這時可以選擇 TCP 或 UDP 協議。
http本質是tcp協議。
TCP是一種面向有連接的傳輸層協議。他可以保證兩端(發送端和接收端)通信主機之間的通信可達。他能夠處理在傳輸過程中丟包、傳輸順序亂掉等異常情況;此外他還能有效利用寬帶,緩解網絡擁堵。
建立TCP連接一開始都要經過三次握手:
三次握手
第一次握手,請求建立連接,發送端發送連接請求報文
第二次握手,接收端收到發送端發過來的報文,可知發送端現在要建立聯機。然后接收端會向發送端發送一個報文
第三次握手,發送端收到了發送過來的報文,需要檢查一下返回的內容是否是正確的;若正確的話,發送端再次發送確認包
在TCP連接建立完成之后就可以發送HTTP請求了。
注意
瀏覽器對同一個域名有連接數限制,大部分是 6,http1.0中往往一個資源下載就需要對應一個tcp/ip請求,而像 HTTP 2.0 協議盡管只使用一個 TCP 連接來傳輸數據,但性能反而更好,而且還能實現請求優先級。
后面會分享更多devops和DBA內容,感興趣的朋友可以關注下!!
404頁面的目的是:告訴瀏覽者其所請求的頁面不存在或鏈接錯誤,同時引導用戶使用網站其他頁面而不是關閉窗口離開。
現在大部分開源系統都會為大家考慮到404頁面的跳轉引導,比如:z-blog/wordpress,都是很不錯的開源系統(注意不要用最原始的開源系統,而是采用帶有模板的系統)。菜鳥后院網站本身也是wordpress的開源程序,然后我們用robin模板。(花299元擁有和菜鳥后院一樣的網站,包括域名和1G阿里巴巴云空間)
搜索引擎使用 http 狀態碼來識別網頁的狀態。當搜索引擎獲得不正確的鏈接時,網站應該返回一個狀態代碼404,告訴搜索引擎放棄索引該鏈接。如果返回一個200或302狀態代碼,搜索引擎會對鏈接進行索引,導致許多不同的鏈接指向相同的頁面內容。結果,搜索引擎對這個網站的信任度大大降低。很多網站存在這個問題,那就是404頁面返回的是200或302狀態碼而不是404狀態碼。
1、做一個簡單的404頁面,命名如:404.html;
2、通過ftp把這個404頁面上傳到網站根目錄;
3、進入虛擬主機管理后臺,找到404頁面提交的入口,添加以上404頁面的地址,如:www.cnbackyard.com/404.html(一般空間服務商都有帶著種功能,也可以直接找他們技術客服完成這步操作)
4、輸入一個錯誤的鏈接進行訪問測試,隨便輸入,比如:www.cnbackyard.com/123.html,如果正確返回到404.html頁面,則算正確;
5、使用站長工具(http://tool.chinaz.com/pagestatus),輸入任意一個錯誤網址,檢查返回值是否為404。如果返回值是200,代表該主機商設置有誤,可以與其技術反饋。
以上操作方法對于一個seo初學者來說,還是有點復雜,同學們可以關注燃燈教育直播課程,參加我們的培訓,理解起來會更透徹一點。
*請認真填寫需求信息,我們會在24小時內與您取得聯系。