面试题之网络(一)

1. get(获取)请求和post(提交)请求的区别?

答:

1. get用于获取数据post请求主要用于提交数据。

2. get请求通过URL传递参数,参数拼接到地址末尾,会在地址栏中显示参数。post请求通过请求体传递参数,参数不会暴露在地址栏中。

3. get请求的参数有长度限制,post请求能发生更多的数据。

4. get请求可以被缓存,可以在浏览器浏览历史历史中回退或刷新,post请求不会被缓存。

5. post请求能发送更多的数据类型,get请求只能发送ASCII字符。

6. get请求产生一个TCP数据包,post请求产生两个TCP数据包(get请求浏览器会把http header和data一并发送出去,服务器响应200返回数据;post请求浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 返回数据)。

2. 输入URL到页面显示的全过程?

答:

1. URL解析:当用户在浏览器地址栏输入URL时,浏览器会对URL进行解析。解析包括判断URL的协议(如HTTP或HTTPS)、域名、端口号和路径等信息。

2. DNS解析:浏览器获取到URL中的域名后,会先进行域名解析,将域名转换为服务器的IP地址。解析过程中,浏览器会先检查本地DNS缓存,如果找到了对应的IP地址,则直接使用缓存的IP地址。如果缓存中没有相关记录,浏览器会向本地DNS服务器发起请求,本地DNS服务器会递归查询域名对应的IP地址,并将结果返回给浏览器。

3. 建立TCP连接:经过DNS解析,浏览器获取到服务器的IP地址后,会与服务器建立TCP连接。在建立连接过程中,浏览器会进行三次握手,即发送SYN包、ACK包和SYN/ACK包,确保连接的可靠性。

4. 发送HTTP请求:TCP连接建立后,浏览器会发送HTTP请求到服务器。请求中包括请求方法(如GET、POST)、请求头(如User-Agent、Cookie等)和请求体(如POST请求的参数)等信息。

5. 服务器处理请求:服务器接收到浏览器发送的HTTP请求后,会进行处理。处理过程中可能涉及到动态生成页面、从数据库获取数据、读取文件等操作。

6. 服务器返回HTTP响应:服务器处理完请求后,会生成HTTP响应。响应中包括响应状态码、响应头(如Content-Type、Cache-Control等)和响应体(如HTML内容)等信息。

7. 浏览器渲染页面:浏览器收到HTTP响应后,会解析响应头和响应体。首先,浏览器根据响应头中的Content-Type来确定响应体的类型(如HTML、CSS、JavaScript等)。然后,浏览器会解析HTML,构建DOM树;解析CSS,构建CSSOM树;解析JavaScript,执行JavaScript代码。最后,浏览器将DOM树和CSSOM树合并成渲染树,并进行页面布局和绘制,最终将页面显示在浏览器窗口中。

8. 页面加载完成:当页面的所有资源都加载完成,并且浏览器完成页面渲染后,页面显示完毕。

3. 强缓存和协商缓存?

答:

强缓存:是指当浏览器发起请求时,会首先检查缓存中是否有对应的资源副本,并且判断是否过期。如果资源未过期,浏览器直接使用缓存中的资源,不再向服务器发送请求,这样可以减轻服务器的压力,提高页面加载速度。常见的强缓存机制有两种:Expires 和 Cache-Control。

Expires 是 HTTP/1.0 提供的响应头字段,它告诉浏览器资源的过期时间。浏览器在下一次请求该资源时,如果当前时间小于过期时间,就直接使用缓存,否则才会向服务器发送请求。但由于 Expires 是基于服务器时间,如果服务器的时间和客户端的时间不一致,可能会导致缓存失效的问题。

Cache-Control 是 HTTP/1.1 提供的响应头字段,它提供更灵活和精确的缓存控制。通过设置不同的指令,可以定义资源的有效期、是否允许缓存、是否允许缓存的副本被修改等。常用的指令有 max-age、no-cache、no-store 等。

协商缓存:是指当浏览器发起请求时,服务器会根据资源的一些特征(如 ETag 或 Last-Modified)生成一个标识符,然后将这个标识符放在响应头的字段中返回给浏览器。浏览器在下一次请求该资源时,会将这个标识符带上,发送给服务器进行校验。如果标识符未发生变化,服务器可以返回一个 304 Not Modified 的响应状态码,告诉浏览器可以使用缓存的资源。如果标识符发生了变化,服务器会返回新的资源给浏览器。

总结:协商缓存的机制相对于强缓存更加灵活,能够更准确地判断缓存是否有效。但相对于强缓存来说,协商缓存需要浏览器每次都发送请求到服务器进行校验,会增加一定的网络开销。总的来说,强缓存适用于资源的有效期较长,需要保持一段时间的缓存,而协商缓存适用于资源的有效期较短,可能会频繁发生变化的情况。在真实的网站开发中,通常会结合使用强缓存和协商缓存,以提高网页的加载速度和用户的体验。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值