網絡傳輸協議
指服務器和客戶端間進行通信時的約束和規範,客戶端與服務端的數據交互並不是雜亂無章的,需要遵照(基於)一定的規範進行。
1,常見協議:
1、HTTP、HTTPS 超文本傳輸協議
2、FTP 文件傳輸協議
3、SMTP 簡單郵件傳輸協議
HTTP協議:即超文本傳輸協議,網站是基於HTTP協議的,例如網站的圖片、CSS、JS等都是基於HTTP協議進行傳輸的。HTTP協議是由從客戶機到服務器的請求(Request)和從服務器到客戶機的響應(Response)進行了約束和規範。即HTTP協議主要由請求和響應構成。常用請求方法 POST、GET、put、delete
2,請求/請求報文:
1、請求行:由請求方式、請求URL和協議版本構成
2、請求頭:
Host:localhost請求的主機
Cache-Control:max-age=0控制緩存
Accept:*/* 接受的文檔MIME類型
User-Agent:很重要
Referer:從哪個URL跳轉過來的
Accept-Encoding:可接受的壓縮格式
If-None-Match:記錄服務器響應的ETag值,用於控制緩存
此值是由服務器自動生成的
If-Modified-Since:記錄服務器響應的Last-Modified值
此值是由服務器自動生成的
3、請求主體:即傳遞給服務端的數據
註:當以post形式提交表單的時候,請求頭裏會設置
Content-Type: application/x-www-form-urlencoded,以get形式當不需要
3,響應/響應報文:
響應由服務器發出,其規範格式為:狀態行、響應頭、響應主體。
狀態行:由協議版本號、狀態碼和狀態信息構成
響應頭:
Date:響應時間
Server:服務器信息
Last-Modified:資源最後修改時間
由服務器自動生成
ETag:資源修改後生成的唯一標識
由服務器自動生成
Content-Length:響應主體長度
Content-Type:響應資源的MIME類型
MIME是標識文件類型的,文件後綴並不能正確無誤的標識文件的類型。
思考?客戶端與服務器間傳遞數據時,是以什麽形式傳輸的?
客戶端與服務器在進行數據傳輸的時候都是以字節形式進行的,咱們可以理解成是以文本形式傳輸,這時瀏覽器就需要明確知道該怎麽樣來解析這些文本形式的數據,MIME就是明確告知瀏覽器該如何來處理。
響應主體:
即服務端返回給客戶端的內容;
狀態碼
常見的有200代表成功、304文檔未修改、403沒有權限、404未找到、500服務器錯誤
4,調試工具:
利用HTTP抓包工具在開發中可以幫我們進行調試,常用抓包工具HttpWatch、Fiddler、Charles、FireBug等
瀏覽器插件
Firebug、HttpWatch、chrome dev tools
代理軟件
Charles、Fiddler
5,協商緩存 (性能優化):
此知識點屬性擴展內容,不做具體分析
前端優化雅虎35條
http://www.tuicool.com/articles/J3uyaa
重繪&回流
http://www.zhangxinxu.com/wordpress/2010/01/%E5%9B%9E%E6%B5%81%E4%B8%8E%E9%87%8D%E7%BB%98%EF%BC%9Acss%E6%80%A7%E8%83%BD%E8%AE%A9javascript%E5%8F%98%E6%85%A2%EF%BC%9F/
利用瀏覽器的緩存機制,可以有效的減少HTTP的請求,提高頁面加載速度,增強用戶體驗,同時也能極大的減輕服務器的負擔,結合HTTP協議,緩存協商就是根據HTTP協議實現緩存控制的一種機制。
問題:是否見過某些網站CSS地址後面會帶有一些參數,通常為xxx.css?cache=20160106形式
這種做法是用來強制清除緩存的,實際開發過程中,每當新功能上線時最容易引起BUG的即CSS的緩存,但是瀏覽器的緩存能減少請求,如果每次都強制清除,會對性能有損失,所以控制瀏覽器緩存成為前端性能化的一個重點
1、Last-Modified時間精確到了秒,但如果1秒內修改了多次,並不能精確的更新緩存。
2、ETag則是判斷文件內容任何改變後,便會由服務器自動生成一個唯一標識。
3、Expires 過期時間,HTTP1.0的規範,一個絕對的時間
4、Cache-Control HTTP1.1規範,設置過期時間,優先級高於Expires。
網絡傳輸協議