作者回复: 这是浏览器的三级缓存机制,使用memory cache比disk cache 的访问速度要快,但是具体什么规则等我回头看下源码再来回答你了。
还有另外一种cache,是service worker的cache。
作者回复: 👍
作者回复: 结合网络模块来分析,总结的挺好
作者回复: cookie是不安全的,比如黑客可以通过一些手段插入一些脚本到你的页面里面(具体一些途径我们浏览器安全篇再讲),通过脚本获取到你的cookie数据,然后就可以利用cookie做一些坏事了。
当然也有一些方法规避,常用的一个是将部分cookie设置成httponly的属性,设置了httponly属性后cookie,就无法通过js脚本来读取了,只是在发送http请求时候会被带上!
当然还有一些其他防范的方法,这个同样咱们后面在聊!
作者回复: 一个是强制刷新,也就是资源都走网络。
一个是正常处理流程。
比如通过网络面板,打开一个站点,再使用强制刷新,可以看到如下信息
176 requests
3.1 MB transferred
3.5 MB resources
Finish: 26.30 s
DOMContentLoaded: 5.04 s
Load: 14.88 s
如果使用正常的刷新,看到的信息如下:
171 requests
419 KB transferred
3.2 MB resources
Finish: 25.09 s
DOMContentLoaded: 1.41 s
Load: 6.24 s
其中的transferred是真正的网络传输的数据,使用强制刷新,传输的数据体积就大多了,而且请求时间也变得更长了。
作者回复: 是没有办法通过前端代码来控制缓存的,缓存是后端或者部署的同学来控制的,但是前端同学应该知道那些内容要被缓存,和后端或者部署的同学配合来打!
作者回复: 是的,通常如图片这种静态资源都是直接配置到cdn上的
作者回复: 是否要使用localstorage,还是要看具体应用场景。其实使用cookie会很方便,因为它会随着http请求头把cookie内容发送服务器,用localstorage需要重新实现数据上传和下载。
作者回复: 用户快速点击也有可能的,通常,前端要处理防止多次点击的情况。
作者回复: http在传输过程中是明文的,所以数据在传输过程中是能够被截获或者修改的,比如谁在你电脑上安装了一个网络拦截软件,或者你的路由器被谁安装了监听软件,甚至在网络服务提供商都有可能修改你页面的内容,基于这些原因,我们需要在传输过程中加密数据,这就是https出现的原因,即便你拦截到了请求,获取的只是加密后的数据,拿到也没有什么用。
这块在浏览器安全篇会系统介绍。
作者回复: 一个http中的keep-alive是排队请求,也就是一个http请求完成之后才能继续请求下一个,而http2中请求是并发的,可以同时处理很多请求!
作者回复: 是同一个域名下面,同一时间只能有6个并发请求,超过六个以上的需要排队!
作者回复: 对,只发送一次。
问下文章什么地方让你感觉是发送了两次啊?
我检查下。
作者回复: http/1.1 一个tcp同时只能处理一个请求,浏览器会为每个域名维护6个tcp连接!
但是每个tcp连接是可以复用的,也就是处理完一个请求之后,不断开这个tcp连接,可以用来处理下个http请求!
不过http2是可以并行请求资源的,所以如果使用http2,浏览器只会为每个域名维护一个tcp连接
作者回复: 浏览器为用同一个域名只维护一个TCP连接。
你从通过Chrome打开chrome://net-export/ 这个地址,然后记录网络过程。
最后在使用这个https://netlog-viewer.appspot.com/ 打开你日志文件,就能看到h2的详细信息了。