gpt4 book ai didi

spring - 在 Spring MVC Rest 服务中缓存 HTTP 响应

转载 作者:行者123 更新时间:2023-12-03 09:51:37 31 4
gpt4 key购买 nike

我有一个以 XML 格式返回数据的 spring MVC 休息服务。我想缓存这个 xml 响应。我怎样才能做到这一点?是否可以使用 mvc:interceptors 来做到这一点?

最佳答案

你可以完成这项工作,但我认为有更好的解决方案。

首先,如果您想使用 Spring MVC 拦截器,您将使用 postHandle 方法将某些内容存储在缓存中,并使用 preHandle 来检查缓存和可能的规避处理。问题是,你在缓存中存储了什么。您需要存储完整的响应。这意味着您必须轻松地从 postHandle 中的 ModelAndView 获得完整响应。这可能会也可能不会容易,这取决于您的工作方式。

一起使用不同的缓存机制很可能会更好。我建议在 Web 服务器级别进行缓存。如果您希望在拦截器级别进行缓存,则尤其如此,因为它就在 Web 服务器的“旁边”,我认为在那里重新发明轮子没有任何好处。 Apache 有一个缓存模块。 nginx也是如此。清漆也非常棒。

我还应该提到,在您确定需要缓存之前,您不应该缓存(不要过早优化)。这是在浪费您的时间和精力。其次,当您确定确实存在需要修复的性能问题(并且缓存是正确的解决方案)时,您应该将正确的数据缓存在正确的位置。

现在,假设您确定确实存在性能问题,并且某种缓存是一个很好的解决方案。接下来要确定的是可以缓存的内容。如果对于每个 URL,您返回相同的数据,那么在 Web 服务器(Apache、nginx、Varnish 等)级别进行缓存将是您的最佳选择。

通常,您会遇到两个客户端访问相同 URL 并获取不同数据的情况。这在 Facebook 等网站上最容易看到。我登录时看到的数据与我 friend 看到的不同。在这种情况下,您将无法在 Web 服务器级别进行缓存。您将需要在应用程序中进行缓存。通常这意味着在数据库级别进行缓存。

关于spring - 在 Spring MVC Rest 服务中缓存 HTTP 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5114666/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com