我的应用程序的一部分提供了使用该redirect()
方法下载的文件。我发现Chrome(奇怪的是,不是Firefox或IE)正在缓存此文件,以便即使更改了服务器端,也下载了相同的版本。据我了解,有一种方法告诉浏览器不缓存文件,比如像这样的HTML,或通过添加一些东西到HTTP标头。我可能可以在较低级别的Web框架中找到这些内容,但是我不知道如何获取Play!中的标题,并且HTML选项不起作用,因为它不是HTML文件。
似乎在Play!中总是有一种聪明而简单的方法来执行常见任务,所以有没有一种聪明而简单的方法来防止在控制器中进行缓存?
谢谢!
马特(Matt)向我指向http.cacheControl
设置,该设置控制整个站点的缓存。尽管这行得通,但我对大多数站点进行缓存都没有问题,尤其是CSS等。如果可能的话,我希望一次控制一个URL的缓存(在这种情况下,该URL指向下载文件)。它并不会完全成为高流量站点,所以这只是学术兴趣而已。
理想情况下,我想执行以下操作:
public static void downloadFile(String url) {
response.setCaching(false); // This is the method I'm looking for
redirect(url); // Send the response
}
播放框架response
对象有一个setHeader
方法。你可以像这样添加所需的标题,例如:
response.setHeader("Cache-Control", "no-cache");