我有一个发送GET:'getPendingList'
的AJAX请求。此请求应返回一个JSON字符串,指示需要批准的列表待处理请求。关于我是否应该在这里使用GET或POST,我有点困惑。
来自this website:
所以我在想:我不希望缓存此GET的结果,因为挂起的列表可能会更改。另一方面,使用POST似乎也没有多大意义。
我应该如何考虑GET和POST?我被告知GET与'read'相同;它不会(或不应该)改变服务器端的任何内容。这是有道理的。没有意义的是缓存部分;如果其他人缓存了我的GET请求,那对我不起作用,因为我希望数据能够改变。
答案 0 :(得分:1)
雅虎的best practices可能值得一读。他们建议主要使用GET来检索信息并使用POST来更新信息。在单独的项目中,他们还建议执行使AJAX请求在可行的地方进行缓存。看看,这是一个很好的阅读。
答案 1 :(得分:0)
简而言之, GET 请求应为idempodent。 POST 请求不是。
如果您正在改变状态,请使用 POST - 否则请使用 GET 。
在谈论使用GET / POST进行缓存时,不要忘记,这是浏览器缓存。
没有什么可以阻止你缓存数据服务器端。
此外,一般来说 - JSON调用应该是 POST (here's why)
答案 2 :(得分:0)
因此,在一些IRC之后,看起来最好的方法是使用GET(在这个特定的实例中),但是为了防止缓存。有两种方法可以做到这一点:
1)在您的GET请求中附加一个随机字符串。
这看起来像是一种hacky方式,但听起来它可能是IE的唯一解决方案:Prevent browser caching of jQuery AJAX call result。
2)在来自服务器的响应中,将标头设置为no-cache。
目前尚不清楚最终的行为是什么。有些人(参见前面的链接)声称IE不遵守no-cache指令。其他人似乎认为这有效:Internet Explorer 7 Ajax links only load once。