当前位置: 首页 > 知识库问答 >
问题:

在Spring Boot中启用Http缓存

梅耘豪
2023-03-14

从我的客户端,我正在从服务器查询一些枚举。现在,我希望在服务器上查询完这些枚举后,立即将其缓存到客户端中。

我尝试设置缓存控制,如下所示:

@CrossOrigin
@RequestMapping(value = "enums/{name}", method = RequestMethod.GET)
public List<String> getEnums( @PathVariable("name") String name, final HttpServletResponse response) {
    response.setHeader("Cache-Control", "max-age=3600");
    return myservice.findAllEnums(name);
}

响应标头似乎已正确设置为缓存控制:最大年龄=3600。我还禁用了安全配置中的所有http头,如下所示:

@Override 
protected void configure(final HttpSecurity http) throws Exception {     
http.headers().cacheControl().disable(); 
}

遗憾的是,响应没有缓存在浏览器中。在查询资源时,查询将再次转到服务器。

同时,我完全删除了Spring Security,但它仍然不起作用。我没有正确理解什么?我还需要配置什么?

共有3个答案

尉迟跃
2023-03-14

关于chrome行为:Chrome返回按钮不尊重cache-control: no-cache头

桓兴腾
2023-03-14

您需要检查是否有任何限制,因为Spring Security没有设置缓存HTTP头。您可以在这里获得更多相关信息:如何在Spring Boot中启用HTTP响应缓存

蒋啸
2023-03-14

好的,我注意到它适用于IE,但不适用于Chrome。Chrome的问题是,如果您正在重新刷新页面,它会在请求的标头上设置Cache-Control: max-age=0。这显然可以防止数据被缓存。然后,我使用指向我的应用程序的超链接创建了一个简单的html,并通过此链接刷新它。因此,缓存按预期工作。

 类似资料:
  • 问题内容: 我已经使用Spring Boot 1.0.2实现了REST服务器。我无法阻止Spring设置禁用HTTP缓存的HTTP标头。 我的控制器如下: 所有HTTP响应均包含以下标头: 我尝试了以下操作来删除或更改这些标头: 调用控制器。 调用控制器。 定义是回报的,我打过电话。 将属性设置为-1或正值。 以上都不起作用。如何在Spring Boot中为所有或单个请求禁用或更改这些标头? 问题

  • 本文向大家介绍在 WildFly 中启用 Hibernate 缓存,包括了在 WildFly 中启用 Hibernate 缓存的使用技巧和注意事项,需要的朋友参考一下 示例 要在WildFly中为Hibernate启用二级缓存,请将此属性添加到persistence.xml文件中: 您还可以使用以下属性启用查询缓存: 启用Hibernate的二级缓存时,WildFly不需要您定义缓存提供程序,因为

  • 我的spring boot项目有以下配置。 此外,我还关注maven对POM的依赖。 我有一个单独的redis服务器运行在我的本地机器上的定义端口。另外,在我的服务类中,我有像@cacheable、@cacheput这样的注释来支持缓存。

  • 如何启用此处列出的ExecutorServiceMetrics? https://github.com/micrometer-metrics/micrometer/blob/master/micrometer-core/src/main/java/io/micrometer/core/instrument/binder/jvm/ExecutorServiceMetrics.java SpringB

  • 问题内容: 当我单击链接的内容设置为div innerHTML时,我具有此功能,我在jquery ajax中设置了属性,但是如果我再次单击该链接,则不会显示任何缓存,而ajax函数仍将到达服务器端并到达我困惑的相同内容实际上是启用缓存的,我应该怎么做才能使其工作? 问题答案: 是默认值,并不总是从缓存中获取内容。浏览器上项目的可缓存性取决于: 从原始Web服务器返回的响应头。如果标题指示不应缓存内