前端工程师到底须要掌握哪些 HTTP 知识才能过好这一辈子?

最近在网上看了几篇文章,都是跟HTTP有关,做为一个支撑起整个互联网 web 应用运转的协议,程序开发人员若是对此不了解,日子确定很差过的。可是话说回来,若是给本身的职业进行必定范围的限制,就限定在前端工程师,到底须要掌握多少 HTTP 的知识才能过好这一辈子呢?端端君大体的整理了一下,包含大体如下方面:http特色,报文,缓存,状态码,方法,cookie, 跨域方式,持久链接和管线化,浏览器输入URL到页面显示整个过程到底发生了什么等等。我能想到的仍是有限,仅是抛砖引玉,记录本身思考的同时也但愿对其余人有所帮助,因此,也欢迎评论交流补充。


http特色

提起 http,确定会想到无状态,无链接。无状态的话网站是如何记录用户的状态呢?cookie是干吗的?为何购物网站搜了一次鼠标,之后不少网站都会有小窗推荐鼠标?三次握手是个什么东西?屡次请求是否是能够少握几回?
固然,http 是比较灵活的。它是怎么实现不一样数据类型的传输的?html

报文

报文分为请求报文和响应报文。请求报文又分为请求行,请求头,请求体。响应报文分为响应行,响应头,响应体。
那么问题来了,报文之间是怎么换行的?和Linux的换行同样吗?url出如今哪里?服务端经过什么来解析请求消息的?POST请求既然没有规定消息体的编码方式,那么均可以使用哪些方式来编码?前端

缓存

浏览器的缓存主要有强缓存和协商缓存。强缓存的话只用 expires 为何很差?协商缓存只用 last-modified 也不够准确呢?web

状态码

常见的的状态码有12345大类。301 和 302 有啥区别?什么状况下会有 304?跨域

方法

HTTP方法有GET,POST,PUT,DELETE,HEAD。
那么问题来了,GET 和 POST 有啥区别?浏览器

cookie

cookie 自己是用于服务端和客户端通讯的,由于具有存储功能,因此也被借用了。
那么问题来了, cookie 怎样设置和获取? cookie 有什么缺点? localStorage 和 SessionStorage 有什么优势?缓存

跨域方式

简单概括一下跨域能够有如下几个方式:hash,postMessage,JSONP,CORS,Websocket等等。
那么问题来了,这几种跨域原理是什么?有什么限制?特定应用场景?cookie

持久链接和管线化

持久链接须要在请求头加入 connection: keep-alive.
那么问题来了,长链接对 http 版本有什么要求? 管线化是什么?请求响应的过程是怎样的?管线化须要注意什么?前端工程师

浏览器输入URL到页面显示整个过程到底发生了什么

终极问题来了,用户从浏览器输入“www.baidu.com”,直到渲染出页面都发什么了什么?
能够把这个问题简单分解一下,客户端是怎样发起请求的?服务端怎样响应请求?客户端如何解析HTML并渲染页面的?
还有,重排和重绘又是什么?发生在哪些时机?如何避免呢?socket

总结:

HTTP的内容稍微一列就会不少。以上仅仅是基础知识,只能说做为一个前端工程师掌握以上内容会比较好过一些。随着咱们的知识和实践经验的积累,技术的边界也会越扩越大,也会发现更多 HTTP 的奥秘,总之,多的是,你不知道的事。post

参考连接:

developer.mozilla.org/zh-CN/docs/…
imququ.com/post/four-w…

相关文章
相关标签/搜索