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

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


http特点

提起 http,肯定会想到无状态,无连接。无状态的话网站是如何记录用户的状态呢?cookie是干嘛的?为什么购物网站搜了一次鼠标,以后很多网站都会有小窗推荐鼠标?三次握手是个什么东西?多次请求是不是可以少握几次?
当然,http 是比较灵活的。它是怎么实现不同数据类型的传输的?

报文

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

缓存

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

状态码

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

方法

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

cookie

cookie 本身是用于服务端和客户端通信的,因为具备存储功能,所以也被借用了。
那么问题来了, cookie 怎样设置和获取? cookie 有什么缺点? localStorage 和 SessionStorage 有什么优点?

跨域方式

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

持久连接和管线化

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

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

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

总结:

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

参考链接:

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


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值