1

我们在 Grails 2.3.5 中开发一个 Web 应用程序。

它由带有 REST API 的 Web 服务组成。Web UI 使用 ExtJS 开发并打包到 Grails war 文件中(在 web-app 中)。

Web UI 通过加载静态 index.html 来引导,该 index.html 根据需要加载 css、js 文件和其他资源。

静态资源在 Config.groovy 中配置:

grails.resources.adhoc.patterns = ['/images/*', '/css/*', '/js/*', '/plugins/*', '/spa/*', '/hds/*']

静态内容未正确缓存在浏览器中。

如果静态文件未在服务器上更新,我想将 Grails 配置为缓存它们,并在它们更改时强制更新它们。

服务器上的文件是今天(2014-05-15)。

示例请求

GET /hdspro/static/hds/resources/js/versionInfo/versionInfo.js HTTP/1.1
Host: dev.healthdataspace.de
Connection: keep-alive
Cache-Control: max-age=0
Accept: */*
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.137 Safari/537.36
Referer: https://dev.healthdataspace.de/hdspro/static/hds/index.html
Accept-Encoding: gzip,deflate,sdch
Accept-Language: sl,en-GB;q=0.8,en;q=0.6,de;q=0.4,en-US;q=0.2
Cookie: JSESSIONID=34C496D289B9CE68F31AE2AFD5031CB2
If-Modified-Since: Thu, 15 May 2014 13:00:42 GMT

回复:

HTTP/1.1 200 OK
Server: nginx/1.6.0
Date: Thu, 15 May 2014 14:15:29 GMT
Content-Type: application/javascript
Content-Length: 130
Connection: keep-alive
Last-Modified: Thu, 15 May 2014 13:00:42 GMT

即使在浏览器中缓存的文件与服务器上的相同,它还是被再次下载。

我尝试使用缓存资源插件来实现这一点,但没有成功,因为所有文件都转换为散列文件并且加载失败。

你有在 Grails 中缓存静态内容的经验吗?

感谢帮助。

4

1 回答 1

2

我看一下不使用资源插件,而是使用 grails 资产管道插件,它将成为 grails 2.4 中的标准。它立即处理缓存和消化。

于 2014-05-15T15:29:09.237 回答