幂等性的概念在理解两者的区别之前,需要了解一个概念:幂等在编程中,幂等操作的特点是其任意多次执行的影响两者与一次执行具有相同的效果。简单来说,就是浏览器发起一个请求和多个请求,而不改变目标资源的状态。也可以说是浏览器缓存了。post和get的区别这是在网上找到的post请求和get请求区别的对比图:但是我个人认为post和get区别的核心点是:缓存机制的区别(是否缓存可以被浏览器缓存)这里的缓存机制我们用到了开头提到的幂等性的概念。由于网络的不可靠性,幂等性显得尤为重要,所以get、head、put、delete必须设计成幂等的:如果一个请求在处理后被服务端接收到,但是客户端没有收到响应,则client会再次Request,如果没有幂等性保证,就会出现意想不到的问题。Post不是幂等的。例如,在segmentfault上两次提交同一篇文章将生成两个资源。通常HTTP缓存只适用于幂等请求(idempotentrequests),对于其他类型的响应是无能为力的。当getrequest的缓存进程第一次请求时,返回数据。返回数据,包括http头中的last-modified(最后修改时间)Etag(表示资源状态的唯一标识符)Expires(表示资源在浏览器缓存中的过期时间),浏览器会返回请求的文件放到Cache目录下,保存以上信息,发起第二次请求。浏览器会先检查Cache目录下是否存在该文件,是否过期。如果同时满足这两个条件,浏览器就不会向服务器发送请求,而是直接使用缓存中的文件。否则,浏览器向服务器发送请求,并在头部添加If-Modified-Since和If-None-Match。如果自上次访问后文件没有被修改或者Etag信息没有变化,则直接返回304状态,表示服务器允许请求访问该资源,但不满足条件,body部分不包含任何返回的响应。解决方法:http://blog.csdn.net/u0128368...
