1

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

4

1 回答 1

1

我认为这是您正在谈论的缓存问题。如果这是您正在谈论的版本控制问题,那么这是git 或 mercurial 等版本控制系统的工作。

每个静态资源都会遇到这个缓存问题。

问题

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

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

解决方案

我看到了两种解决方案:

  • 使用 Etag 和 Cache-control 指令让用户每 X 天请求一次新的静态资源。我使用前端服务器(例如Nginx)执行此操作,但您也可以为此使用播放支持(在此处详细说明
  • 创建一个包含资源版本的假查询参数。例如,您可以拥有http://www.mydomain.com/public/images/logo.png?v=1.2. 如果更改v参数,浏览器将不会从缓存中检索它。在服务器端,查询参数不会改变任何东西,服务的资源将再次被缓存。

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

于 2012-06-15T12:25:10.353 回答