1.http响应头中的ETage是如何生成的?
ETag 是一个不透明的标识符,由 Web 服务器根据 URL 上的资源的特定版本而指定。如果 URL 上的资源内容改变,一个新的不一样的 ETag 就会被生成。ETag 可以看成是资源的指纹,它们能够被快速地比较,以确定两个版本的资源是否相同。
需要注意的是 ETag 的比较只对同一个 URL 有意义 —— 不同 URL 上资源的 ETag 值可能相同也可能不同。
2.如果ETage值改变了,是否意味着文件内容一定改变?
不一定。ETag 是用于标识资源的唯一标识符,其生成算法可以依赖于资源的内容、版本号、最后修改时间等多个因素。因此,当某个资源的 ETag 值改变时,并不能直接说明该资源的内容已经改变。
例如,如果一个资源的 ETag 值是基于最后修改时间生成的,那么即使资源的内容未发生任何改变,只要最后修改时间改变了,ETag 值也会相应改变。这种情况下,虽然 ETag 值改变了,但实际上资源的内容并没有改变。
另外,由于不同服务器和应用程序可能采用不同的方式来生成 ETag,所以即使同样的资源在不同的环境下生成的 ETag 值也可能不同。这种情况下,ETag 值的改变也不能直接说明资源内容已经改变。
因此,在判断资源是否有更新时,不能仅仅依据 ETag 值的改变,还需要结合其他标识符(例如 Last-Modified 时间戳)进行综合判断。通常情况下,服务器会同时返回 ETag 和 Last-Modified 等标识符,客户端可以根据需要选择使用哪个标识符来判断资源是否有更新。
3.http中 get和post方法的区别?
最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数。(post传输的数据更大,因为在URl中有长度限制)
post在真正接收数据之前会先将请求头发送给服务器进行确认,然后才真正发送数据(比get更安全)
post用于修改和写入数据,get用来读取数据,获取数据
4. http2和http1.1有什么改进
HTTP2.0(Hypertext Transfer Protocol Version 2)是超文本传输协议的第二版。HTTP 2.0相比于HTTP 1.x,大幅度的提升了web性能,同时向下兼容HTTP1.X协议版本。
Http2.0的核心优势有
1、采用二进制格式传输数据,而非http1.1文本格式,二进制格式在协议的解析和优化扩展上带来了跟多的优势和可能
2、对消息头采用Hpack进行压缩传输,能够节省消息头占用的网络流量,http1.1每次请求,都会携带大量冗余的头信息,浪费了很多宽带资源。
3、异步连接多路复用
4、Server Push,服务器端能够更快的把资源推送到客户端。
5、保持与HTTP 1.1语义的向后兼容性也是该版本的一个关键。