比如我有个接口,GET的 http://localhost/api
接口PHP写的,查询mysql数据库,大概语句是 select * from my_user limit 1
那么 get请求会被缓存
是什么意思? 我每次访问这个接口如果数据更新那也不是一样的啊? 还是说需要后端处理或者前端处理?
比如我有个接口,GET的 http://localhost/api
接口PHP写的,查询mysql数据库,大概语句是 select * from my_user limit 1
那么 get请求会被缓存
是什么意思? 我每次访问这个接口如果数据更新那也不是一样的啊? 还是说需要后端处理或者前端处理?
你给的博客说的是:
get 请求可被缓存
可被缓存
可被缓存
不是
会被缓存
可被缓存意思是根据相应的 HTTP 缓存协议规则,浏览器可以达到缓存结果的目的,不是说任何 get 请求都会被浏览器缓存啊喂。
8 回答5.8k 阅读✓ 已解决
9 回答9.2k 阅读
6 回答4.7k 阅读✓ 已解决
4 回答13.2k 阅读✓ 已解决
5 回答3.5k 阅读✓ 已解决
5 回答7.7k 阅读✓ 已解决
12 回答5.8k 阅读
这里是数据会被前端缓存,当浏览器发了一条请求,会返回数据,浏览器会把返回的数据记录下来。
当你再次发送该请求的时候,浏览器并不真的再发送这条请求,而是从历史记录里把这个数据读取取出来,这叫做缓存。这是浏览器自己的决策,后端并不知道也没有收到任何请求。
防止浏览器缓存的方法是添加http头,告诉浏览器不要缓存数据,或是给一个校验。。。。等等
但是更靠谱的方法是每次都让get的数据不一样:
添加一个后端直接忽略的参数,然后每次都不一样,这样浏览器就认为每次都是不同的请求,就不会从历史记录里读取数据了。