作者:大宽宽
链接:https://www.zhihu.com/question/28586791/answer/767316172
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
PS:知乎上关注的一个架构师大佬的回答,架构师的眼界和看代问题的深度广度令人耳目一新,转载出来希望可以和小伙伴们一起学习!
这里特指浏览器中非Ajax的HTTP请求,即从HTML和浏览器诞生就一直使用的HTTP协议中的GET/POST。浏览器用GET请求来获取一个html页面/图片/css/js等资源;用POST来提交一个表单,并得到一个结果的网页。
浏览器将GET和POST定义为:
GET
“读取“一个资源。比如Get到一个html文件。反复读取不应该对访问的数据有副作用。比如”GET一下,用户就下单了,返回订单已受理“,这是不可接受的。没有副作用被称为“幂等“(Idempotent)。
因为GET因为是读取,就可以对GET请求的数据做缓存。这个缓存可以做到浏览器本身上(彻底避免浏览器发请求),也可以做到代理上(如nginx),或者做到server端(用Etag,至少可以减少带宽消耗)
POST
在页面里