浏览器缓存由Grails

时间:2016-01-09 00:35:42

标签: grails caching

我有一个控制器操作,它从数据库中读取图像并将其提供给客户端:

def profilePicture() {
    def profilePicture = ProfilePicture.get(1)
    response.setHeader("Content-disposition", "attachment; filename=1.png")
    response.contentType = "PNG"
    response.outputStream << profilePicture.profilePicture
    response.outputStream.flush()
}

每次客户端请求图像时,服务器都会以状态200提供整个图像。如何指示客户端可以缓存此内容?

我已经尝试response.setHeader("Expires", "...")以及未来的日期,但这没有帮助(我猜这只是故事的一部分,因为服务器没有返回304)。< / p>

1 个答案:

答案 0 :(得分:0)

实际上,Grails有一个名为Caching Headers的插件,它将处理所有需要的缓存和etag生成,以便浏览器在未修改文件且在您配置的缓存期内不会请求下载文件。

如果您阅读文档并花时间测试配置,则使用起来非常简单。