and*_*kus 9 java browser-cache http-headers playframework
我的应用程序的一部分提供了使用该redirect()方法下载的文件.我发现Chrome(而不是Firefox或IE,很奇怪)正在缓存此文件,以便即使更改了服务器端也会下载相同的版本.据我了解,有一种方法告诉浏览器不缓存文件,例如像这样的HTML,或通过添加一些东西到HTTP标头.我可能会在较低级别的Web框架中找到这些,但我不知道如何在Play!中获取标题,并且HTML选项将无法工作,因为它不是HTML文件.
似乎总是有一种聪明而简单的方法在Play中执行常见任务!那么有一种聪明而简单的方法可以防止控制器中的缓存吗?
谢谢!
Matt将我指向http.cacheControl设置,该设置控制整个站点的缓存.虽然这可以工作,但我对缓存的大部分网站都没有问题,特别是CSS等.如果可能的话,我想一次控制一个URL的缓存(在这种情况下指向下载文件的那个).它并不会成为一个高流量的网站,所以这只是学术兴趣.
理想情况下,我想做的事情如下:
public static void downloadFile(String url) {
response.setCaching(false); // This is the method I'm looking for
redirect(url); // Send the response
}
Run Code Online (Sandbox Code Playgroud)
Tom*_*mmi 10
Play框架response对象有一个setHeader方法.您可以像这样添加所需的标题,例如:
response.setHeader("Cache-Control", "no-cache");
Run Code Online (Sandbox Code Playgroud)
我还没有测试过,但看起来http.cacheControl配置设置可能会起作用.
http.cacheControl
HTTP响应标头控制静态文件:设置默认的max-age(以秒为单位),告诉用户浏览器应该缓存页面的时间.这仅在
prod模式下读取,在dev模式下禁用缓存.例如,要发送no-cache:Run Code Online (Sandbox Code Playgroud)http.cacheControl=0默认值:
3600- 将缓存到期时间设置为一小时.
| 归档时间: |
|
| 查看次数: |
6860 次 |
| 最近记录: |