Get与Post请求及Get缓存

一、get与post的区别

  1. get传参方式是通过地址栏URL传递,是可以直接看到get传递的参数。post传参方式参数URL不可见。get把请求的数据在URL后面通过?连接,通过&进行参数分割。post将参数存放在HTTP的包体内。
  2. get传递参数是通过URL进行传递,对传递的数据长度是受到URL大小的限制,URL最大长度是2048个字符。post没有长度限制。
  3. get后退不会有影响,post后退会重新进行提交。
  4. get请求可以被缓存,post不可以被缓存。
  5. get请求只可以URL编码,post支持多种编码方式。
  6. get请求的记录会留在历史记录中,post请求不会留在历史记录。
  7. get只支持ASCLL字符,post没有字符类型限制。

二、Get缓存

  1. 什么是http缓存?
    http缓存指的是:当客户端向服务器请求资源时,会先抵达浏览器缓存,如果浏览器有“要请求资源”的副本,就可以直接从浏览器缓存中提取而不是从原始服务器中提取这个资源。
    常见的http缓存只能缓存get请求响应的资源,对于其他类型的响应无能为力。http缓存都是从第二次请求开始的,第一次请求的时候浏览器把返回的数据记录下来,再次发送请求的时候,浏览器并不是真的再发送这条请求,而是从历史记录里把这个数据读出来。
  2. get缓存如何生效?
    get请求并不是默认就能够缓存数据。打开控制台,查看get请求里面的response header。
    在这里插入图片描述
    此时cache-control为no-cache,expires为0,查阅文档得知no-cache的意思是告知服务器不直接使用缓存,要求向原服务器发起请求;expires设置缓存过期时间,给出的时间/日期之后再次向服务器发送请求更新数据。
    若后端在这个接口里面设置断点,每次前端刷新页面,都会进入断点里面。说明get方法并没有使用缓存。
    后端重新配置response header:
response.setDateHeader('Expires',System.currentTimeMillis()+1000*60*60*24);//24小时
response.setHeader('Cache-control','max-age=60'); //60秒(优先级更高)

再次刷新页面发送请求,后端代码进入断点,释放代码之后,控制台查看response header,cache- control和expires都配置成功了。
在这里插入图片描述
再刷新页面,NetWork重新调用接口,后端并没有进入断点,一分钟后再次刷新页面,后端进入断点。 此时缓存设置的一分钟到期了,才会再次请求服务器。
3. 后端设置了缓存,浏览器如何禁用?
浏览器有一个功能,打开控制台可以设置禁用缓存,点击NetWork里面的Disabled cache。此时每次刷新页面请求接口的时候,后端都会进入断点。
在这里插入图片描述
4. 防止浏览器缓存的方法
防止浏览器缓存的方法是设置response header,告诉浏览器不要缓存数据,或者给一个校验,比较靠谱的方法是每次都让get的数据不一样:

Get  http://localhost/api?_t=时间戳

添加一个后端直接忽略的参数,每次都不一样,这样浏览器就认为每次都是不同的请求,就不会从历史记录里读取数据了。

  • 13
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值