幂等性与安全性
http 方法 | 幂等性 | 是否安全 |
---|---|---|
get | 是 | 是 |
head | 是 | 是 |
put | 是 | 否 |
delete | 是 | 否 |
post | 否 | 否 |
patch | 否 | 否 |
PUT 和 PATCH 操作在更新资源方面是相似的,但执行更新的方式是不同的。PUT 操作通过向整个资源发送更新来更新资源。PATCH 操作只对需要更新的资源应用部分更新,由此产生的 PATCH 调用可以产生更小的有效负载,从而提高性能。需要注意的是PATCH 调用可不是幂等的。
数据压缩
如果响应数据的有效负载非常大,将会减慢请求完成的时间,并且影响性能。简单来说,可以使用 GZip 压缩来减少有效负载的大小,在 Web API 上使用 Deflate 压缩,或者可以将 Accept-EncodingRequest 更新为 Gzip。有效的数据压缩能够减少在 Web 应用程序上响应的下载量,同时提高上传速度
高性能优化 ---- 缓存
缓存是提高 API 性能的最简单的方法之一。
如果有经常返回相同响应的请求,那么该响应的缓存将有助于避免额外的服务调用和数据库查询。需要注意的是,应确保在缓存使用的生命周期,尤其是在发生数据更新的时候进行。此外,缓存增强了可伸缩性,服务端可以通过设置响应头来提高缓存能力,比如 Cache-Control、 Expires、 Pragma、 Last-Modified 等等。
- Cache-Control:max-age=XXX 浏览器获取到资源内容后,将资源内容缓存在本地,缓存有效期是XXX秒。
若过期前再次访问资源,直接使用本地缓存;过期后再访问,则向服务器发请求,若服务器检查资源没有更新,则返回304状态码;如果有更新,则返回200状态码以及新的资源内容。同时浏览器延长本地资源的缓存有效期 - Cache-Control:no-cache 资源可以缓存在浏览器本地,但每次使用缓存前,都要跟服务器协商确认资源是否有更新
- Cache-Control:no-store 禁用缓存。浏览器每次都要请求服务器,服务器每次都要返回200状态码以及资源内容。
- Cache-Control:max-age=XXX,must-revalidate 浏览器获取到资源后,将资源缓存在本地,有效期是XXX秒。过期前再次访问,不再请求服务器,直接使用本地缓存;过期后则需请求服务器,验证资源是否有更新