URL
1.URL與URI
URL - 統(tǒng)一資源定位符
URI - 統(tǒng)一資源標識符
URL與URI的區(qū)別
所有的URL都是URI,但URI不一定是URL
2.完整的URL
- 完整的url具有哪些元素
網(wǎng)絡(luò)協(xié)議://IP地址:端口號/路徑;參數(shù)?查詢數(shù)據(jù)#錨點 - 網(wǎng)絡(luò)協(xié)議 -
- IP地址 - 每個電腦都有0.0.0.0每個
- 端口號 - 電腦開放給外部電腦訪問接口
- 路徑 - 相對路徑和絕對路徑
- 參數(shù) - 某些方案會使用參數(shù)來指定輸入?yún)?shù)
- 查詢地址 -
- key=value&key=value
- 錨點 -
- 一般使用時:
http://www.baidu.com/news
http://137.0.0.1:8080?key=value
http://localhost:80#mylink
Http協(xié)議
1.網(wǎng)絡(luò)協(xié)議
客戶端與服務(wù)端之間的協(xié)議
2.主流協(xié)議
http窃爷、socket纽绍、ftp敷矫、pop3
3.http協(xié)議
- 多用與b/s架構(gòu)
- 問題
短連接:每次客戶端與服務(wù)端交互時哪审,先建立連接毫痕,交互完畢后寒瓦,關(guān)閉連接
無狀態(tài):服務(wù)端只能記得住當次請求狀態(tài) - http:1.0 - 目前主流版本
http:1.1 - 較新版本(向下兼容)
http:2.0 - 最新版本
http請求協(xié)議
- 客戶端發(fā)送一個請求粥血,應(yīng)該有如下三個部分:
請求行: 請求方法燕侠、請求url 狀態(tài)碼、(http協(xié)議版本)
請求頭部: 說明服務(wù)器要使用的附加信息
請求主體: 提交給服務(wù)器的請求數(shù)據(jù) - HTTP客戶端請求內(nèi)容詳解
請求行 - 請求的信息
請求類型 - get立莉、post
請求地址
如果是get請求绢彤,參數(shù)應(yīng)該拼到url的后面url?key=value,但請求體為空
如果是post請求蜓耻,url后面不拼參數(shù)茫舶,參數(shù)放在請求體中
狀態(tài)碼 - 服務(wù)器端的狀態(tài) - 請求頭 - 反映給服務(wù)端的信息
格式為 key:value,key:value,...
accept - 表示瀏覽器可接受的MIME類型
accept-Encoding - 瀏覽器能夠進行解碼的數(shù)據(jù)編碼方式
accept-language - 表示服務(wù)端接受的語言
zh-cn:簡體中文
zh-tw:繁體中文
zh - 中文
us -英文
connection - 表示當前鏈接狀態(tài)
keep-alive - 保持連接
host - 請求的服務(wù)器網(wǎng)址刹淌;
referer - 表示當前的請求來源
實現(xiàn)防盜鏈接
user-agent 獲取到用戶瀏覽器信息
cache-control -緩存控制
max-age 設(shè)置最大活動周期,設(shè)置緩存保存的最大時間的單位為秒饶氏,為0代表不緩存
cookie - 將cookie自動攜帶到請求頭
content-type:互聯(lián)網(wǎng)媒體類型;使用post請求必須設(shè)置這個屬性
也叫做MIME類型有勾,在Http協(xié)議消息頭中疹启,使用Content-Type來表示具體請求中的媒體類型信息。
<form>元素提交時默認的類型
一般文件上傳時默認為application/x-www.form-urlencoded
Content-Length:請求內(nèi)容的長度
對于POST請求來說Content-Length必須出現(xiàn) - 請求體 - 存放請求參數(shù)
如果為post請求蔼卡,有值喊崖,如果為get請求為空
http響應(yīng)協(xié)議
- 服務(wù)端給客戶端響應(yīng)信息,應(yīng)該有如下三部分
響應(yīng)行:協(xié)議版本 狀態(tài)碼 原因短語
響應(yīng)頭部:
響應(yīng)主題: 返回給客戶端的響應(yīng)數(shù)據(jù)雇逞,可能是字符數(shù)據(jù)荤懂,也可能是字節(jié)數(shù)據(jù) - HTTP服務(wù)端響應(yīng)內(nèi)容詳解
- 響應(yīng)行
狀態(tài)碼
協(xié)議版本 - 響應(yīng)頭
Allow:服務(wù)器支持哪些請求方法
GET、POST
Content-Encoding 文檔的編碼(Encode)
Cache-Control: 告訴客戶端塘砸,服務(wù)端的緩存配置
Connection - 表示當前的連接狀態(tài)
keep-alive 表示保持連接
content-length 響應(yīng)數(shù)據(jù)的長度(大薪诜隆)
content-type - 響應(yīng)數(shù)據(jù)的mime類型
一般情況下:text/html
Date - 當前響應(yīng)的日期時間
keep-alive 設(shè)置保持連接的超時和最大存活時間
timeout=5 max=99
server - 服務(wù)器端的信息 - 響應(yīng)體
服務(wù)器返回給客戶端的數(shù)據(jù)主體
擴展內(nèi)容
1.請求類型
get/post/head/put/delete/options/trace
2.標準API - 標準的請求方式
get - 獲取數(shù)據(jù)
post - 修改數(shù)據(jù)
put - 新增數(shù)據(jù)
delete - 刪除數(shù)據(jù)
3.狀態(tài)碼
1XX - 服務(wù)器的信息
2XX - 表示請求成功
200:請求成功
201:成功創(chuàng)建連接
202:接受請求
3XX - 表示重定向
302:表示重定向
304:表示服務(wù)端資源沒有變化,訪問緩存
問題 - 這次請求沒有真正低訪問服務(wù)器端
305:使用代理
4XX - 客戶端錯誤
400:錯誤的請求
404:網(wǎng)頁找不到
403:拒絕訪問
405:請求類型不允許
5XX - 服務(wù)端錯誤
500:服務(wù)端錯誤
502:路徑錯誤
504:請求超時
505:http版本不支持
4.MIME類型 - 文件類型
MIME類型是如何定義的
//定義MIME類型
<mime-mapping>
//文件的擴展名
<extension>jpg</extension>
//對應(yīng)的MIME類型
<mime-type>image/jpeg</mime-type>
</mime-mapping>
常見的MIME類型
html - text/html
htm - text/html
css - text/css
js - text/javascript
json - application/json
jpg - image/jpeg
text - text/plain
5.請求參數(shù)
- get請求類型
將請求數(shù)據(jù) - url?key=value(瀏覽器地址)
安全性低
請求地址的長度是有限制的
請求數(shù)據(jù)中包含中文的話掉蔬,需要轉(zhuǎn)碼 - post請求類型
瀏覽器地址欄url廊宪,不包含請求類型
安全性相對比較高
對請求數(shù)據(jù)的長度沒有要求
請求數(shù)據(jù)中包含中文的話矾瘾,可以不轉(zhuǎn)碼,對中文的處理相對比較好
6.控制HTTP頭部方法
可以配置每個HTML文件的HTTP-EQUIV標簽控制緩存
<meta http-equiv="Cache-Control" content="no-cache">
在PHP頁面中控制響應(yīng)頭
header("Content-Type: image/jpeg");
緩存工作原理
1.客戶端可以自動保存已經(jīng)訪問過的文檔的副本箭启,這些副本就成為“文檔緩存”
2.當客戶端再次發(fā)送針對同一個URL的請求時壕翩,如果本地有“已緩存的副本”,就可以直接從本地存儲設(shè)備而不是遠程服務(wù)器提取該文檔了册烈。
3.數(shù)據(jù)緩存有下列優(yōu)點
減少了冗余的數(shù)據(jù)傳輸戈泼,節(jié)省客戶端流量費用
緩解服務(wù)器帶寬瓶頸的問題婿禽,服務(wù)器可以節(jié)省出更多的帶寬
降低了對服務(wù)器的資源消耗和運行要求
降低了由于遠距離而造成的加載延時
http基本優(yōu)化
網(wǎng)站性能優(yōu)化最主要的就是要減少HTTP請求及每次響應(yīng)中內(nèi)容的長度赏僧。可以從連接過程中的下列方面加以考慮:
1.域名解析
盡可能減少域名解析次數(shù)——減少跨站外部資源的引用
2.創(chuàng)建連接
努力減少連接創(chuàng)建次數(shù)——使用Keep-Alive避免重復連接
3.發(fā)送請求
盡力減少請求次數(shù)——合理設(shè)置Expires時間扭倾、資源合并
4.等待響應(yīng)
提高服務(wù)器端運行速度——提高數(shù)據(jù)運算及查詢速度
5.接收響應(yīng)
盡可能減小響應(yīng)數(shù)據(jù)長度——啟用壓縮
安全的HTTP協(xié)議
1.HTTP協(xié)議本質(zhì)上屬于“明文傳輸”淀零,可能被竊聽和篡改,政府膛壹、銀行等機密應(yīng)用需要需要“安全版本的HTTP”:http協(xié)議默認端口80
2.HTTPS協(xié)議將消息發(fā)送給TCP層之前驾中,先交給了一個安全層(由SSL或TLS協(xié)議實現(xiàn)),安全層負責對消息進行加密和解密操作模聋。https協(xié)議默認端口443