都说努力就能得到,是不是真的,也许要付全力去做才知道属于自己的答案
Get
什么是JAVA https://zhuanlan.zhihu.com/p/62717204
了解下HTTP 缓存机制 https://juejin.im/post/5a1d4e546fb9a0450f21af23#comment
关于缓存机制重点:
服务器是如何判断缓存是否失效呢?
我们知道浏览器和服务器进行交互的时候会发送一些请求数据和响应数据,我们称之为HTTP报文。
报文中包含首部header和主体部分body。与缓存相关的规则信息就包含在header中。
boby中的内容是HTTP请求真正要传输的部分。举个HTTP报文header部分的例子如下:
强制缓存
对于强制缓存,服务器响应的header中会用两个字段来表明——Expires和Cache-Control。
Expires 是http1.0的产物,现在主要用Cache-Control
cache-control 属性 :
cache-control: private 客户端可以缓存
cache-control: public 客户端和代理服务器都可以缓存
cache-control: max-age-t 缓存内容将在t秒后失效
cache-control: no-cache 需要使用协商缓存来验证缓存数据
cache-control: no-store 所有内容都不会缓存
协商缓存
协商缓存需要进行对比判断是否可以使用缓存。浏览器第一次请求数据时,服务器会将缓存标识与数据一起响应给客户端,客户端将它们备份至缓存中。再次请求时,客户端会将缓存中的标识发送给服务器,服务器根据此标识判断。若未失效,返回304状态码,浏览器拿到此状态码就可以直接使用缓存数据了。 对于协商缓存来说,缓存标识我们需要着重理解一下,下面我们将着重介绍它的两种缓存方案。
Last-Modified
Last-Modified: 服务器在响应请求时,会告诉浏览器资源的最后修改时间。
if-Modified-Since: 浏览器再次请求服务器的时候,请求头会包含此字段,后面跟着在缓存中获得的最后修改时间。服务端收到此请求头发现有if-Modified-Since,则与被请求资源的最后修改时间进行对比,如果一致则返回304和响应报文头,浏览器只需要从缓存中获取信息即可。 从字面上看,就是说:从某个时间节点算起,是否文件被修改了
- 如果真的被修改:那么开始传输响应一个整体,服务器返回:200 OK
- 如果没有被修改:那么只需传输响应header,服务器返回:304 Not Modified
if-Unmodified-Since: 从字面上看, 就是说: 从某个时间点算起, 是否文件没有被修改
- 如果没有被修改:则开始`继续'传送文件: 服务器返回: 200 OK
- 如果文件被修改:则不传输,服务器返回: 412 Precondition failed (预处理错误)
这两个的区别是一个是修改了才下载一个是没修改才下载。 Last-Modified 说好却也不是特别好,因为如果在服务器上,一个资源被修改了,但其实际内容根本没发生改变,会因为Last-Modified时间匹配不上而返回了整个实体给客户端(即使客户端缓存里有个一模一样的资源)。为了解决这个问题,HTTP1.1推出了Etag。
Etag
Etag: 服务器响应请求时,通过此字段告诉浏览器当前资源在服务器生成的唯一标识(生成规则由服务器决定)
If-None-Match: 再次请求服务器时,浏览器的请求报文头部会包含此字段,后面的值为在缓存中获取的标识。服务器接收到次报文后发现If-None-Match则与被请求资源的唯一标识进行对比。
- 不同,说明资源被改动过,则响应整个资源内容,返回状态码200。
- 相同,说明资源无心修改,则响应header,浏览器直接从缓存中获取数据信息。返回状态码304.
但是实际应用中由于Etag的计算是使用算法来得出的,而算法会占用服务端计算的资源,所有服务端的资源都是宝贵的,所以就很少使用Etag了。
缓存的优点
- 减少了冗余的数据传递,节省宽带流量
- 减少了服务器的负担,大大提高了网站性能
- 加快了客户端加载网页的速度 这也正是HTTP缓存属于客户端缓存的原因。
不同刷新的请求执行过程
- 浏览器地址栏中写入URL,回车 浏览器发现缓存中有这个文件了,不用继续请求了,直接去缓存拿。(最快)
- F5 F5就是告诉浏览器,别偷懒,好歹去服务器看看这个文件是否有过期了。于是浏览器就胆胆襟襟的发送一个请求带上If-Modify-since。
- Ctrl+F5 告诉浏览器,你先把你缓存中的这个文件给我删了,然后再去服务器请求个完整的资源文件下来。于是客户端就完成了强行更新的操作.
了解一下 cookie 和 session https://juejin.im/post/5aede266f265da0ba266e0ef
这两篇博客总结的已经超级好了,我就不总结了
接口测试
接口测试的基本概念,参考博客了解 https://juejin.im/post/5b4c5518f265da0f6131fb20
一、什么是接口测试?
接口测试主要用于 外部系统 与 系统之间 以及 内部各个子系统 之间的交互点,
定义特定的交互点,然后通过这些交互点来,通过一些特殊的规则也就是协议,来进行数据之间的通信和交互
简单的说就是通过URL向服务器或者其他模块等,传输我们想传输的数据,然后看看他们返回的是不是我们预期想要的。
二、接口的类型?
分为两种
1、系统对外的接口
2、程序内部的接口
三、接口的分类?
1、Web service
2、http API
四.接口的本质及其工作原理是什么?
接口你可以简单的理解他就是URL,工作原理就会说URL通过get或者post请求向服务器发送一些东西,
然后得到一些相应的返回值,本质就是数据的传输与接收。
五.问什么要做接口测试?
①.越底层发现bug,它的修复成本是越低的。
②.前端随便变,接口测好了,后端不用变,前后端是两拨人开发的。
③.检查系统的安全性、稳定性,前端传参不可信,比如京东购物,前端价格不可能传入-1元,但是通过接口可以传入-1元。
④.如今的系统复杂度不断上升,传统的测试方法成本急剧增加且测试效率大幅下降,接口测试可以提供这种情况下的解决方案。
⑤. 接口测试相对容易实现自动化持续集成,且相对UI自动化也比较稳定,可以减少人工回归测试人力成本与时间,缩短测试周期,支持后端快速发版需求。接口持续集成是为什么能低成本高收益的根源。
⑥. 现在很多系统前后端架构是分离的,从安全层面来说:
(1)、只依赖前端进行限制已经完全不能满足系统的安全要求(绕过前面实在太容易), 需要后端同样进行控制,在这种情况下就需要从接口层面进行验证。
(2)、前后端传输、日志打印等信息是否加密传输也是需要验证的,特别是涉及到用户的隐私信息,如身份证,银行卡等。
六、做接口测试的工具
Postman 、 Jmeter
Jmeter 教程
时光有痕,我听见破土而出的声音。
展望:
关于以后的周记排版和记录的内容
标题 我的周记N——“词或者句子”
版块
版头 一张图片 自己拍的 分享一下此时的心情
1 学习相关
2 新闻相关
3 思考相关
4 读书相关
5 展望