Play Framework似乎正在缓存GET结果

时间:2015-02-28 10:33:16

标签: heroku playframework

我正在使用Play Framework 2.3.8(在2.2.4上遇到同样的问题,升级没有帮助)。

我没有使用Play Framework的Cache API。但似乎GET结果仍然以某种方式被Play奇怪地缓存。

例如,如果我点击api GET /api/GetPurchases,我会得到2个结果。 Play会记录GetPurchases api已被点击(我还会覆盖OnRouteRequest中的Global.java并将其记录在那里)。然后我会点击api POST /api/CreatePurchase并确认数据库中现在有3个购买对象。

我会再次致电GET /api/GetPurchases,我会得到2个结果。日志显示,好像api /api/GetPurchases从未被击中过。

此外,这只有在我的应用程序部署到Heroku时才会发生。本地一切都很完美。但是我已经说过Heroku的支持,以确保Heroku只是平台,他们永远不会让Play采取任何不同的行动。

1 个答案:

答案 0 :(得分:1)

我们最终发现Play Framework正在缓存GET结果。

我们发现默认情况下,Play不会将结果缓存在开发模式中(因此在本地部署时)。但在生产模式下(因此在部署到Heroku时),Play会默认缓存结果。

要更改此设置,我们在操作方法中添加了这行代码,我们不希望Play缓存结果:

response().setHeader(CACHE_CONTROL, "no-cache");

通过运行foreman start本地模拟生产部署也很有帮助。

感谢上述评论中的Salem和millhouse