在学习MVC概念时,我读到过不建议在“GET”操作中放置改变服务器对象状态(如数据库更新等)的代码,这被认为是一种不好的实践。其中一个原因是“返回数据缓存”。
请问有人可以解释一下吗?
先谢谢了!
在学习MVC概念时,我读到过不建议在“GET”操作中放置改变服务器对象状态(如数据库更新等)的代码,这被认为是一种不好的实践。其中一个原因是“返回数据缓存”。
请问有人可以解释一下吗?
先谢谢了!
这是HTTP标准。GET动词应该是幂等和安全的。
9.1.1 安全方法
实现者应该意识到软件代表用户在互联网上的交互,并且应该小心地允许用户了解他们可能采取的任何行动,这些行动可能对他们或其他人具有意外的重要性。
特别地,已经建立了约定,即GET和HEAD方法不应具有除检索之外的其他含义。这些方法应该被认为是“安全的”。这使得用户代理可以以特殊方式表示其他方法(如POST、PUT和DELETE),以便向用户表明正在请求可能不安全的操作。
当然,无法确保服务器不会生成GET请求的副作用;事实上,一些动态资源认为这是一个功能。这里的重要区别在于用户没有请求副作用,因此不能对它们负责。
[OutputCache]
或其他类似方式,因此,如果为GET控制器操作打开了缓存,则单击导向/Home/Index
的链接可能实际上并不在服务器上运行Index
方法,而是允许浏览器从其自己的缓存中提供页面。[OutputCache]
不是客户端缓存,而是服务器端缓存。其他的都很有道理。 - Samantha Branham