PlayFramework 2.0.1资产版本控制

时间:2012-06-15 07:58:21

标签: playframework

我喜欢LESS css和Google Closure编译器对Play 2的支持。有没有办法添加对自动版本控制的支持,这样我就不必担心每次更改时都重命名文件。 社区中的其他人如何处理这个问题?

1 个答案:

答案 0 :(得分:1)

我认为这是您正在谈论的缓存问题。如果它是您正在讨论的版本控制问题,那么Version Control System就像git或mercurial一样。

每个静态资源都会出现此缓存问题。

问题

为了在客户端快速显示网页(并且为了在服务器端没有那么多静态内容请求),您将在HTTP响应中添加Cache-Control和Etag指令。然后,浏览器将从其缓存中获取这些静态资源。

但是如果您更改logo.png(例如更改公司徽标),由于此图像存储在浏览器缓存中,用户将看不到您的新徽标。

<强>解决方案

我看到两个解决方案:

  • 使用Etag和Cache-control指令让用户每隔X天请求新的静态资源。我使用前端服务器(例如Nginx),但您也可以使用播放支持(详细here
  • 创建包含资源版本的假query parameters。例如,您可以http://www.mydomain.com/public/images/logo.png?v=1.2。如果更改v参数,浏览器将不会从缓存中检索它。在服务器端,查询参数不会更改任何内容,并且将再次缓存所服务的资源。

我使用我的application.conf中的配置参数的第二个解决方案附加到所有静态资源。这假设当您更新单个资源时,所有资源都会重新加载(通常,当您更改图像时,您也将更改您的CSS,为什么不更改您的js文件...)