我在开发模式下启动了我的play应用程序,并试图更改索引html文件,但play没有更新它。我的应用程序只包括公共文件夹中的资产,为了看到更改,我必须重新启动应用程序。我的观察表明,play编译target/web/public/main目录中的资源,并且在public目录中的文件更改时不更新它我应该如何配置我的应用程序,以便在更改时重新加载所有资产?
target/web/public/main
public
li9yvcax1#
某些浏览器会将资源缓存在您的公共文件夹中,因此当播放服务器提供新内容时,您仍然会看到旧内容。如果您使用的是Chrome,您可以通过执行硬重载(Ctrl+Shift+R)来清除缓存,这将迫使它再次从服务器获取所有内容。一个更好的解决方案是使用资产指纹,您可以在这里找到有关信息。这基本上意味着,当资产的内容发生变化时,资产的名称也会发生变化,因此您的浏览器将意识到它需要下载新文件,而不是提供缓存的文件。要做到这一点很简单-在您的路由文件中,更改
GET /assets/*file controllers.Assets.at(path="/public", file)
到
GET /assets/*file controllers.Assets.versioned(path="/public", file: Asset)
当你需要引用一个资产时,不要使用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中,而不是将其作为公共文件夹中的资产)Play将在任何更改后重新编译模板并提供新页面。
k0pti3hp2#
这真是个愚蠢的问题。我的一个子项目包含配置scalaSource in Compile := baseDirectory.value,它只是覆盖了Compile中的原始scalaSource。这个问题已经解决了,改为scalaSource in ThisScope := baseDirectory.value。
scalaSource in Compile := baseDirectory.value
Compile
scalaSource
scalaSource in ThisScope := baseDirectory.value
btxsgosb3#
有时你需要等待一小段时间的发挥,以检测文件的变化,尝试刷新页面几次,看看它是否工作此外,如果您在特殊环境中运行Play,例如从MacOS运行链接到Docker容器的代码,则需要some special settings到Play的文件更改侦听器才能进行检测。
3条答案
按热度按时间li9yvcax1#
某些浏览器会将资源缓存在您的公共文件夹中,因此当播放服务器提供新内容时,您仍然会看到旧内容。如果您使用的是Chrome,您可以通过执行硬重载(Ctrl+Shift+R)来清除缓存,这将迫使它再次从服务器获取所有内容。
一个更好的解决方案是使用资产指纹,您可以在这里找到有关信息。这基本上意味着,当资产的内容发生变化时,资产的名称也会发生变化,因此您的浏览器将意识到它需要下载新文件,而不是提供缓存的文件。要做到这一点很简单-在您的路由文件中,更改
到
当你需要引用一个资产时,不要使用Assets.at,而要使用Assets.versioned ie。
成为
然而,正如Kris在他的评论中所说,如果你要使用twirl模板系统(你的索引页面在app/views/index.scala.html中,而不是将其作为公共文件夹中的资产)Play将在任何更改后重新编译模板并提供新页面。
k0pti3hp2#
这真是个愚蠢的问题。我的一个子项目包含配置
scalaSource in Compile := baseDirectory.value
,它只是覆盖了Compile
中的原始scalaSource
。这个问题已经解决了,改为scalaSource in ThisScope := baseDirectory.value
。btxsgosb3#
有时你需要等待一小段时间的发挥,以检测文件的变化,尝试刷新页面几次,看看它是否工作
此外,如果您在特殊环境中运行Play,例如从MacOS运行链接到Docker容器的代码,则需要some special settings到Play的文件更改侦听器才能进行检测。