【问题标题】:Play Framework not picking latest changes in Javascript and CSSPlay Framework 未选择 Javascript 和 CSS 的最新更改
【发布时间】:2017-03-20 17:41:37
【问题描述】:

每当我对 CSS 文件进行更改时,Play 框架都不会选择最新的文件。它似乎已经缓存了一个旧版本并继续使用它。我如何强制从服务器而不是从浏览器缓存(或从中选择 css、javascript 文件的任何地方)中选择文件?

我在本地机器上运行服务器并使用 localhost:9000 访问服务器

【问题讨论】:

标签: playframework


【解决方案1】:

您需要使用版本化资产。确保在routes 中使用controllers.Assets.versioned

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

在 HTML 模板中:

<script src="@routes.Assets.versioned("javascripts/hello.js")" type="text/javascript"></script>

并且不要忘记在build.sbt 中配置版本控制

// Production.
pipelineStages := Seq(digest) 

// Development.
pipelineStages in Assets := Seq(digest)

您还需要在project\plugins.sbt 中启用digist 插件

addSbtPlugin("com.typesafe.sbt" % "sbt-digest" % "1.1.1")

生成的 HTML:

<script src="/assets/javascripts/a7c0637aa0972b62ef0c436a66be57b1-hello.js" type="text/javascript"></script>

所以不会有缓存问题,因为每次更新文件后文件名都是新的。

【讨论】:

  • 谢谢。我在玩 2.2.6,sbt 0.13.0。早些时候我使用&lt;script type="text/javascript" src="@routes.Assets.versioned("javascripts/Example 1-3.js")"&gt;&lt;/script&gt;。我将其更改为&lt;script type="text/javascript" src="controllers.Assets.versioned("javascripts/Example 1-3.js")"&gt;&lt;/script&gt;。也对 build.sbt 和 plugins.sbt 进行了更改。但我的 Javascript 没有加载。我认为pipelineStages 不是针对我正在使用的游戏版本定义的。
  • 你是对的 - 我的帖子不够清楚,所以返回你的更改。我仍然认为您的版本化管道无法正常工作。
猜你喜欢
  • 2013-09-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-25
  • 1970-01-01
  • 2019-03-18
  • 1970-01-01
相关资源
最近更新 更多