如何根据资产内容配置Play以生成唯一的URL?

时间:2013-07-23 13:46:51

标签: scala playframework playframework-2.1

我希望所有静态资产(javascript,css,images)都具有此缓存行为:

  1. 将它们“永远”缓存
  2. 他们的网址应该是根据其内容生成的唯一网址(例如MD5(内容))
  3. 每当资产内容发生变化时,资产的网址都会发生变化,因此客户知道要获取新版本。
  4. 这应该在没有代码更改的情况下自动发生。
  5. 我可以配置播放2为我执行此操作吗?

1 个答案:

答案 0 :(得分:0)

当使用Assets控制器为您的文件生成反向路径时,

AFAIK Play 2 会自动使用资产缓存。

从“为斯卡拉玩”这本书:

  

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

     

[...]

     

ETag标头值是资源文件名称的哈希值   修改日期。如果你不了解哈希,请不要担心:所有你   需要知道的是,如果服务器上的文件已更新,则使用新文件   例如,徽标的版本,此值将更改。一旦有了   ETag值,HTTP客户端可以发出条件请求,这意味着   '只有在我获得此资源后才给我这个资源   使用此ETag的版本。'为此,客户端包括ETag   请求标头中的值