我在一个 Web 项目中使用 Spring Boot,并且我想使用静态内容缓存功能。
在 application.properties 中使用 ContentVersionStrategy 和以下配置
spring.resources.chain.enabled=true
spring.resources.chain.cache=true
spring.resources.chain.strategy.content.enabled=true
spring.resources.chain.strategy.content.paths=/**
以及 Thymeleaf html 中的此类资源
<script src="@{/js/app.js}"></script>
我将 MD5 哈希值附加到文件名中,但如果我对该文件进行更改,内容会发生变化,但哈希值仍然相同。
如果文件内容发生更改,使哈希值在每个请求上“重新加载”的唯一方法是设置:
spring.resources.chain.cache=false
但我认为这忽略了使用这个 Spring 功能的意义。 这是正常行为吗?
最佳答案
这是正常行为。
在生产环境中,您希望缓存查找。但在开发过程中,您可能不会(如果您反复编辑 JavaScript 文件)。
设置 spring.resources.chain.cache=true 将创建一个 ResourceResolver
实现链,其中的 CachingResourceResolver
将委托(delegate)给该链ResourceResolvers,并缓存结果。
关于java - 使用 ContentVersionStrategy 的 Spring Boot 缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46553556/