我正在开发环境中将 Keycloak 从 9.x 升级到 12.x。我最初复制了一些自定义主题,发现样式严重损坏(毫不奇怪)。我检查了我的 FTL 文件,将一些核心更改复制到我的主题中,情况好多了 - 只是需要调整一些小问题。
现在问题来了。我已对 login.css 文件进行了更改,但这些更改未显示在浏览器中。它继续获取我的自定义 CSS 文件的旧版本。
我尝试过的(其中大多数尝试过多次):
我现在还在整个 Keycloak 目录中查找了一些我已删除的 CSS 规则,并且在任何可能被意外引用的地方都找不到“旧”CSS 文件的任何副本。
此外,加载 CSS 文件时 Keycloak 日志中没有任何消息。
我想弄清楚如何让 Keycloak 将更新后的 CSS 传递到浏览器。
瞎猜,如果不行请别怪我。 (问题应包括最小可重现示例):
编辑
/opt/jboss/keycloak/standalone/configuration/standalone-ha.xml
并更新如下:
<theme>
<staticMaxAge>-1</staticMaxAge>
<cacheThemes>false</cacheThemes>
<cacheTemplates>false</cacheTemplates>
...
</theme>
对我来说,更改此文件后它就起作用了 独立.xml 就像下面的方式
<cacheThemes>false</cacheThemes>
<cacheTemplates>false</cacheTemplates>
我认为这是因为我使用的是单实例模式而不是集群 ha 模式。
除了如上所述禁用缓存之外,您还可以调整主题资源 URL,从而破坏客户端缓存。这有点hack,但是您可以通过调整数据库migration_model.id值来直接修改URL的资源标签部分。
参考资料:
我更改了 Keycloak(版本 18)主题的 CSS,并且重新启动 docker 容器没有刷新缓存。 我必须跑:
docker exec -it docker_keycloak_1 rm -rf /opt/jboss/keycloak/standalone/tmp/kc-gzip-cache
访问特定站点时,将自动重新创建缓存文件。