简单的方法让我的所有ajax响应都不可缓存

时间:2012-12-19 22:27:44

标签: java caching jersey

我正在维护一个使用Jersey创建RESTful API的应用程序。

我想在所有这些上设置响应标头以关闭缓存。

我可以通过强力替换每个

来做到这一点
Response.ok().build()

Response.ok().cacheControl(noCache).build()

其中noCache之前定义为

CacheControl noCache = new CacheControl();
noCache.setNoCache(true);

(并对我构建的所有其他Response对象进行了类似的更改)但是在所有100多个地方进行此更改时,返回值似乎都是火腿。有没有一种简单的方法来为我生成的所有响应设置首选项?

2 个答案:

答案 0 :(得分:2)

除非泽西岛有神奇的设置,否则我能想到的一种方法是使用像AspectJ这样的AOP库。您捕获build()方法的调用,并在之前执行cacheControl。

但是,与进行日食搜索这种方法的所有调用者并用其他内容替换相比,这是否值得付出努力是值得怀疑的。

根据DRY(Do-not Repeat Yourself)原则,更好的编程风格是抽象&集中构建响应的方式,这样当您需要更改它时,您只需要在一个位置而不是多个位置进行更改。也许你可以在这里应用服务模式(例如:创建一个ResponseBuilderService)。

答案 1 :(得分:2)

处理此问题的正确位置将在Web容器中;你正在使用哪一个(Jetty / Tomcat / Grizzly /等)?