浏览器相关知识

2020-08-12  本文已影响0人  RayLightUp

accpet

accpet代表发送端(客户端)希望接受的数据类型

content-type

代表发送端(客户端|服务端)发送的实体数据的数据类型

Content-type类型

常见的媒体格式类型如下:

以application开头的媒体格式类型:

另外一种常见的媒体格式是上传文件之时使用的:

常见错误编码

在第一次请求服务器的时候在获取资源之后是会先把该资源缓存在本地的,同时服务器response返回了一个响应头ETag,ETag全称Entity Tag,用来标识一个资源。在具体的实现中,ETag可以是资源的hash值,也可以是一个内部维护的版本号。但不管怎样,ETag应该能反映出资源内容的变化,这是Http缓存可以正常工作的基础。服务器对于hello world这个字符串使用上述返回的ETag来表示,只要hello world这个资源不变,这个Etag就不会变。

客户端第二次请求服务器的时候,利用请求头If-None-Match来告诉服务器自己已经有个ETag为xxx的资源。如果服务器上的资源没有变化,也就是说服务器上的资源的ETag也是xxx的话,服务器就不会再返回该资源的内容,而是返回一个304的响应,告诉浏览器该资源没有变化,缓存有效,浏览器将直接调用本地缓存。!

cache-control

利用cache-control来定义缓存策略,cache-control在控制谁在什么条件下可以缓存影响以及可以缓存多久。最快的请求是不必与服务器进行通信的请求:通过相应的本地副本,我们可以避免所有的网络延迟以及数据传输的数据成本。

get和post的区别

从tcp/ip的角度回答这个问题:GET产生一个TCP数据包;POST产生两个TCP数据包。对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据;
而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。

ajax跨域请求携带cookie

xhrFields.withCredentials: true 参数,服务器端通过在响应 header 中设置 Access-Control-Allow-Credentials = true 来运行客户端携带证书式访问。通过对 Credentials 参数的设置,就可以保持跨域 Ajax 时的 Cookie。
https://blog.csdn.net/weixin_40811829/article/details/82050980

强缓存和协商缓存

强缓存
  1. cache-control:max-age=xxxx public
    客户端和代理服务器都可以缓存该资源;
    客户端在xxx秒的有效期内,如果有请求该资源的需求的话就直接读取缓存,statu code:200 ,如果用户做了刷新操作,就向服务器发起http请求

  2. cache-control: max-age=xxxx,private
    只让客户端可以缓存该资源;代理服务器不缓存
    客户端在xxx秒内直接读取缓存,statu code:200

  3. cache-control: max-age=xxxx,immutable
    客户端在xxx秒的有效期内,如果有请求该资源的需求的话就直接读取缓存,statu code:200 ,即使用户做了刷新操作,也不向服务器发起http请求。

4.cache-control:no-cache
跳过设置强缓存,但是不妨碍设置协商缓存;一般如果你做了强缓存,只有在强缓存失效了才走协商缓存的。

5.cache-control:no-store
不缓存,这个会让客户端、服务端不缓存,也就没有所谓的强缓存、协商缓存了

协商缓存

协商缓存就是客户端请求资源发现过期,然后去请求服务器,而这个时候请求服务器的过程就是可以设置协商缓存。

如何设置协商缓存?
respnse header里面设置

etag: '5c20abbd-e2e8'
last-modified: Mon, 24 Dec 2018 09:49:49 GMT

etag:每个文件有一个,改动文件了就变了,就是个文件hash,每个文件唯一,就像用webpack打包的时候,每个资源都会有这个东西

last-modified:文件的修改时间,精确到秒

也就是说,每次请求返回来 response header 中的 etag和 last-modified,在下次请求时在 request header 就把这两个带上,服务端把你带过来的标识进行对比,然后判断资源是否更改了,如果更改就直接返回新的资源,和更新对应的response header的标识etag、last-modified。

所以协商缓存步骤总结:

请求资源时,把用户本地该资源的 etag 同时带到服务端,服务端和最新资源做对比。
如果资源没更改,返回304,浏览器读取本地缓存。
如果资源有更改,返回200,返回最新的资源。

https://www.jianshu.com/p/9c95db596df5

http版本

https

TCP三次握手

建立连接前,客户端和服务端需要通过握手来确认对方。

上一篇 下一篇

猜你喜欢

热点阅读