Warm tip: This article is reproduced from serverfault.com, please click

java-如何防止使用Play浏览器进行缓存?

(java - How do I prevent browser caching with Play?)

发布于 2011-09-25 18:11:56

我的应用程序的一部分提供了使用该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
}
Questioner
andronikus
Viewed
11
Tommi 2011-09-26 13:28:37

播放框架response对象有一个setHeader方法。你可以像这样添加所需的标题,例如:

response.setHeader("Cache-Control", "no-cache");