Java 缓存在POST和GET中意味着什么

Java 缓存在POST和GET中意味着什么,java,http,servlets,post,get,Java,Http,Servlets,Post,Get,我已经看到POST和GET之间的主要区别之一是POST不是缓存的,而GET是缓存的 你能解释一下“缓存”是什么意思吗 此外,若我使用POST或GET,服务器会向我发送响应。有什么区别吗?在所有情况下,我都有请求数据和响应,不是吗 ThankGET应该从服务器返回相同的结果,并且不会在服务器端更改内容,因此是幂等的 而POST意味着它可以在服务器上修改某些内容(在db中创建条目、删除某些内容等),因此不是幂等的 关于在GET中缓存数据,这里已经以一种很好的方式进行了讨论 GET和POST方法背后

我已经看到POST和GET之间的主要区别之一是POST不是缓存的,而GET是缓存的

你能解释一下“缓存”是什么意思吗

此外,若我使用POST或GET,服务器会向我发送响应。有什么区别吗?在所有情况下,我都有请求数据和响应,不是吗


Thank

GET应该从服务器返回相同的结果,并且不会在服务器端更改内容,因此是幂等的

而POST意味着它可以在服务器上修改某些内容(在db中创建条目、删除某些内容等),因此不是幂等的

关于在GET中缓存数据,这里已经以一种很好的方式进行了讨论


GET和POST方法背后的基本思想是GET消息只检索信息,而不会更改服务器的状态。(因此得名)。因此,几乎任何缓存系统都会假设您可以记住返回的上一个GET响应,而下一个GET响应看起来都是一样的

另一方面,POST是向服务器发送新信息的请求。因此,它们不仅不能被缓存(因为无法保证下一篇文章不会对内容进行更多的修改;例如,像按钮一样思考+1),而且它们实际上必须使缓存的部分无效,因为它们可能会修改页面

因此,例如,当您尝试刷新向其发布信息的页面时,您的浏览器会发出警告,因为您可能会进行不希望的更改。获取页面时,它不会这样做,因为这样做无法更改站点上的任何内容

(或者更确切地说,作为一名程序员,您的工作是确保在获取页面时不会发生任何更改。)

缓存(在HTTP上下文中)意味着将页面/响应存储在客户端或某个中间主机上,可能存储在内容分发网络中。当客户机请求页面时,可以从客户机缓存(如果客户机之前请求过)或中间主机提供页面服务。这比从生成页面的服务器获取页面更快,所需资源更少

一个缺点是,如果请求更改了服务器上的某些状态,那么如果页面是从缓存提供的,则不会发生这种更改。这就是为什么POST请求通常不从缓存提供服务的原因


缓存的另一个缺点是,缓存的副本可能已过期。HTTP缓存机制试图阻止这种情况。

请注意,“无任何更改”在应用程序上下文中没有任何意义。我理解何时使用GET和何时使用POST。我对“缓存”这个词的意思很感兴趣