2

我想让所有静态资产(javascript、css、图像)都具有这种缓存行为:

  1. “永远”缓存它们
  2. 他们的 URL 应该是从他们的内容生成的唯一 URL(例如 MD5(content))
  3. 每当资产内容发生变化时,资产的 URL 就会发生变化,因此客户端知道要获取新版本。
  4. 这应该自动发生而无需更改代码。

我可以配置 Play 2 来为我执行此操作吗?

4

1 回答 1

0

AFAIK Play 2Assets在使用控制器生成文件的反向路由时自动使用资产缓存。

摘自《为 Scala 演奏》一书:

除了反向路由,使用资产控制器的另一个好处是它内置的缓存支持,使用 HTTP 实体标签 (ETag)。这允许 Web 客户端对资源发出有条件的 HTTP 请求,以便服务器可以告诉客户端它可以使用缓存副本而不是返回未更改的资源。

[...]

ETag 标头值是资源文件名称和修改日期的哈希值。如果您不了解哈希,请不要担心:您需要知道的是,如果服务器上的文件被更新,例如使用新版本的徽标,这个值将会改变。一旦它有一个 ETag 值,HTTP 客户端就可以发出一个条件请求,这意味着“只有在我得到带有这个 ETag 的版本之后它没有被修改过的情况下才给我这个资源。” 为此,客户端在请求标头中包含 ETag 值

于 2013-07-23T15:04:28.770 回答