webpack4.0各個擊破(3)—— Assets篇
1379
2025-04-04
一、原理區別
一般我們在瀏覽器輸入一個網址訪問網站都是GET請求;再FORM表單中,可以通過設置Method指定提交方式為GET或者POST提交方式,默認為GET提交方式。
HTTP定義了與服務器交互的不同方法,其中最基本的四種:GET,POST,PUT,DELETE,HEAD,其中GET和HEAD被稱為安全方法,因為使用GET和HEAD的HTTP請求不會產生什么動作。不會產生動作意味著GET和HEAD的HTTP請求不會在服務器上產生任何結果。但是安全方法并不是什么動作都不產生,這里的安全方法僅僅指不會修改信息。
根據HTTP規范,POST可能會修改服務器上的資源的請求。比如知乎編寫文章,用戶提交一篇文章或者一個讀者提交評論是通過POST請求來實現的,因為再提交文章或者評論提交后資源(即某個頁面)不同了,或者說資源被修改了,這些便是“不安全方法”。
二、使用時最直觀的區別
最直觀的區別就是GET把參數包含在URL中,POST通過request body傳遞參數。
get請求:
post請求:
三、為什么get比post更快
1.post請求包含更多的請求頭
因為post需要在請求的body部分包含數據,所以會多了幾個數據描述部分的首部字段(如:content-type),這其實是微乎其微的。
2.最重要的一條,post在真正接收數據之前會先將請求頭發送給服務器進行確認,然后才真正發送數據
post請求的過程:
(1)瀏覽器請求tcp連接(第一次握手)
(2)服務器答應進行tcp連接(第二次握手)
(3)瀏覽器確認,并發送post請求頭(第三次握手,這個報文比較小,所以http會在此時進行第一次數據發送)
(4)服務器返回100 Continue響應
(5)瀏覽器發送數據
(6)服務器返回200 OK響應
get請求的過程:
(1)瀏覽器請求tcp連接(第一次握手)
(2)服務器答應進行tcp連接(第二次握手)
(3)瀏覽器確認,并發送get請求頭和數據(第三次握手,這個報文比較小,所以http會在此時進行第一次數據發送)
(4)服務器返回200 OK響應
也就是說,目測get的總耗是post的2/3左右,這個口說無憑,網上已經有網友進行過測試。
3.get會將數據緩存起來,而post不會
可以做個簡短的測試,使用ajax采用get方式請求靜態數據(比如html頁面,圖片)的時候,如果兩次傳輸的數據相同,第二次以后消耗的時間將會在10ms以內(chrome測試),而post每次消耗的時間都差不多。經測試,chrome和firefox下如果檢測到get請求的是靜態資源,則會緩存,如果是數據,則不會緩存,但是IE什么都會緩存起來,當然,應該沒有人用post去獲取靜態數據吧,反正我是沒見過。
四、面試是一般怎么回答get和post的區別
(1)post更安全(不會作為url的一部分,不會被緩存、保存在服務器日志、以及瀏覽器瀏覽記錄中)
(2)post發送的數據更大(get有url長度限制)
(3)post能發送更多的數據類型(get只能發送ASCII字符)
(4)post比get慢
(5)post用于修改和寫入數據,get一般用于搜索排序和篩選之類的操作(淘寶,支付寶的搜索查詢都是get提交),目的是資源的獲取,讀取數據
五、測試get和post請求的工具
get和post請求一般使用的是接口測試工具,接口測試工具我個人一般使用的是:apipost和jmeter。
apipost是一款國產的接口測試工具和接口文檔生成工具,能夠滿足我們日常工作當中對于接口測試和接口文檔生成的工作需求。接口文檔還可以支持多種格式的生成,有在線版、markdown、word版等多種格式的接口文檔。
jmeter可以進行接口測試和性能測試,但是對于做單純的接口測試jmeter操作起來沒有apipost使用起來方便。jmeter重點在于壓力測試,穩定性測試和負載測試。針對于接口和程序的穩定性設計的一塊以軟件性能為主接口測試為輔的接口測試工具。
工具-:https://www.apipost.cn
網絡 HTTP
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。