网络层面随笔

编程入门 行业动态 更新时间:2024-10-15 18:22:40

网络<a href=https://www.elefans.com/category/jswz/34/1738589.html style=层面随笔"/>

网络层面随笔

1.Last-Modified 局限性

        a. 时间精度只有秒级别,但某文件在一秒内可以被更改n次。

        b. 某一文件经过修改后但内容并未发生改变。(比如添加一行再删除一行)

2. Etag — Last-Modified的‘补丁’,精度更高。

        针对文件内容进行hash计算,得到的hash值作为Etag的值。

3. 图片防盗链

        a. Referer: 标识网页来源地址。

        原理:通过判断referer来验证访问是否合法,不合法则返回403,禁止访问图片。

        b. 给图片添加水印。

4.防止图片防盗链 不发referer请求头,两种方式:

        a. 直接浏览器输入url,自动不会携带referer。

        b.Referrer-Policy设置不发送Referer请求头: Referrer-Policy: no-referrer

5.User-Agent 标识客户端,简称UA.

        通过该头可获取到所用浏览器、浏览器版本、操作系统等信息。

6. 项目缓存策略

对带有hash值的文件资源设置一年强缓存;(当源文件内容发生变更时,hash值发生改变,生成新的可永久缓存的资源地址,此时打包会遍历文件,更新缓存地址并清除掉旧缓存)。

对不带hash值得文件资源一定要显式的配置 Cache-Control: no-cache。

如果不配置,就会触发启发式缓存,从而造成应用升级但是刷新不生效的问题。

(tips: 不设置强缓存的时候,默认进入的是启发式缓存,而不是协商缓存)

7.No-cache/No-store 区别

no-cache: 可以在客户端存储资源,每次都必须去服务端做新鲜度校验,以此来决定从服务端获取新资源还是从客户端获取缓存。(协商缓存)

no-store:永远不在客户端存储资源,每次都去原始服务器获取资源。(彻底不缓存)

8.Max-age = 0,代表什么?

max-age=0 暗示内容立即被认为是陈旧的(并且必须重新获取),这实际上与 Cache-Control: no-cache 相同。

no-cachemax-age=0作为请求头,二者均会重新向服务器发起请求,哪怕该请求已被缓存。

9.502跟504区别

502 Bad Gateway: 一般表现为你自己写的应用层服务(Java/Go/PHP)挂了,或者网关指定的上游服务直接指错了地址,网关层无法接收到响应

504 Gateway Timeout: 一般表现为应用层服务 (Upstream) 超时,超过了 Gatway 配置的 Timeout,如查库操作耗时三分钟,超过了 Nginx 配置的超时时间

10.状态码

100: 服务器检查请求头是否有问题。没问题返回100,有问题返回417.

101: 表示正在切换协议,如从http切换到websocket.

103: 提前声明对某些资源的优化提示

preload: 预加载。

preconnect: 提前建立链接。

200:请求成功,即 HTTP 200 OK 响应状态。

201: 一般用以POST请求,代表服务器资源创建成功。

206: 当客户端指定 Range 范围请求头时,服务器端将会返回部分资源。当请求音视频资源体积过大时,一般使用 206 较多。

301:HTTP 301 表示被请求的资源已永久移动到新位置,即我们常说的301跳转,并且将来任何对此资源的引用都应该使用本响应返回的URI。如果可能,拥有链接编辑功能的客户端应当自动把请求的地址修改为从服务器反馈回来的地址

302:HTTP 302 表示请求的资源现在临时从不同的URI响应请求,即302跳转。由于这样的重定向是临时的,客户端应当继续向原有地址发送以后的请求。只有在Cache-Control或Expires中进行了指定的情况下,这个响应才是可缓存的。

400:请求错误,通常是访问的域名未绑定引起,即 HTTP 400 Bad Request 响应状态。

401:当没有权限的用户请求需要带有权限的资源时,会返回 401,此时携带正确的权限凭证再试一次可以解决问题

403:禁止访问,即 HTTP 403 Forbidden 响应状态。HTTP 403 表示服务器已经理解请求,但是拒绝执行它。与401的拒绝响应不同的是,这与身份验证无关,而且这个请求也不应该被重复提交。如果这不是一个HEAD请求,而且服务器希望能够讲清楚为何请求不能被执行,那么就应该在实体内描述拒绝的原因。当然服务器也可以返回一个404响应,假如它不希望让客户端获得任何信息。

404:请求的内容未找到或已删除,即 HTTP 404 Not Found 响应状态。状态详细说明:HTTP 404 表示请求失败,请求所希望得到的资源未被在服务器上找到,有可能网址内容根本不存在,或曾经存在,但当前已经被删除。没有信息能够告诉用户这个状况到底是暂时的还是永久的

413 : Request Body过大,服务器处理不过来

429: 超过某一个 API 的 Rate Limit 规则,会被限流.(不同的接口,有不同的限流规则)

500: 服务器端程序错误

502:表示网关无响应,作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应。

503:服务器端临时错误,即 HTTP 503 Service Unavailable 响应状态。由于临时的服务器维护或者过载,服务器当前无法处理请求。这个状况是临时的,并且将在一段时间以后恢复。如果能够预计延迟时间,那么响应中可以包含一个Retry-After头用以标明这个延迟时间。如果没有给出这个Retry-After信息,那么客户端应当以处理500响应的方式处理它。

504:网关超时。

更多推荐

网络层面随笔

本文发布于:2023-11-16 03:55:42,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1612453.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:层面   随笔   网络

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!