gpt4 book ai didi

scala - 为什么 Play 框架不重新加载资源?

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

我在开发模式下启动了我的 play 应用程序,并尝试更改索引 html 文件,但 play 没有更新它。我的应用程序仅包含公共(public)文件夹中的 Assets ,为了查看更改,我必须重新启动我的应用程序。我的观察表明,play 会编译 target/web/public/main 目录中的资源,并且当 public 目录中的文件更改时不会更新它

我应该如何配置我的应用程序,以便在更改它时重新加载所有资源?

最佳答案

某些浏览器会将资源缓存在您的公共(public)文件夹中,因此当 Play 服务器提供新内容时,您仍然会看到旧内容。如果您使用的是 Chrome,您可以通过执行硬重新加载 (Ctrl+Shift+R) 来清除缓存,这将强制它再次从服务器获取所有内容。

更好的解决方案是使用 Assets 指纹识别,您可以找到有关 here 的信息。 。这基本上意味着当 Assets 的内容发生变化时, Assets 的名称也会发生变化,因此您的浏览器会意识到它需要下载新文件而不是提供缓存的文件。要做到这一点非常简单 - 在你的路由文件中,更改

GET  /assets/*file        controllers.Assets.at(path="/public", file)

GET  /assets/*file  controllers.Assets.versioned(path="/public", file: Asset)

当您需要引用 Assets 时,不要使用 Assets.at,而是使用 Assets.versioned ie。

<link rel="stylesheet" href="@routes.Assets.at("stylesheets/main.css")">

变成了

<link rel="stylesheet" href="@routes.Assets.versioned("stylesheets/main.css")">

但是,正如 Kris 在评论中所说,如果您要使用 twirl 模板系统(您的索引页位于 app/views/index.scala.html 中,而不是将其作为公共(public)文件夹中的 Assets ),请 Play 进行任何更改后将重新编译您的模板并提供新页面。

关于scala - 为什么 Play 框架不重新加载资源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32257111/

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