对于我的工作,我正在查看一些javascript文件,并发现一些使用POST的AJAX调用,但没有发送任何数据。它似乎已经习惯了,但后端已更新,并且不需要数据,之前的开发人员将它们留作POST(或者他们只是复制并粘贴了来自其他文件的$.ajax
个调用,并删除了数据值)。
我将这些空的POST请求更改为GET请求。我假设使用GET而不是空POST更有效。我看了,并没有发现任何有用的东西。
那么,在没有数据发送的情况下使用GET而不是POST会更有效吗?
答案 0 :(得分:9)
我认为GET与POST不是一个效率问题,而是一个语义问题。 POST请求的目的是什么?如果意图以某种方式改变系统的状态,那么我建议将它们作为POST保留。如果意图只是从系统中检索一些数据,那么我会将它们更改为GET。
数据参数的问题并没有真正发挥作用,因为GET和POST请求都可以接受参数。 (通过发布数据获取查询字符串和POST)
除了理论上的顾虑之外,还有使用GET或POST的真正原因。例如,GET请求可以由Web服务器,代理服务器和客户端缓存,而POST请求永远不会缓存AFAIK。我确信还有其他差异,但坚持请求的语义性质应该为你照顾它们。
答案 1 :(得分:4)
而不是表现原因,这是两个动词的意义的区别。 GET应该不会更改请求的资源,而POST可能会这样做。
答案 2 :(得分:2)
除了GET
有一个字符小于POST
之外,我怀疑是否有任何性能差异。两个请求都有精确的标题(方法部分除外),没有正文。它们几乎相同。
例如:
GET /someResource.ext HTTP/1.1
Accept: text/plain
Accept-Encoding: gzip
// empty line //
与
POST /someResource.ext HTTP/1.1
Accept: text/plain
Accept-Encoding: gzip
// empty line //
但是当选择一个而不是另一个时,你应该记住他们的目的。当您需要从服务器检索某些内容时应使用GET,而当您需要向服务器发送某些内容时应使用POST(如发送<一样发送< / em>,而不是发送参数)。