【发布时间】:2011-12-21 02:08:51
【问题描述】:
我的模板中有一些这样的代码:
#{list people, as:'person'}
<img src="@@{Application.image(person.id)}">
#{/list}
启动播放服务器后,列表会多次显示第一张图像。例如,如果 people 变量包含 1、2、3、4、5 的 id - 那么将显示五张图像,但它们都是相同的图像:对应于 1 的 id 的图像。
如果我点击刷新,图像都会根据它们的 ID 改变为唯一的。从模板渲染的 html 如下所示:
<img src="http://url/application/image?personId=1"/>
<img src="http://url/application/image?personId=2"/>
<img src="http://url/application/image?personId=3"/>
<img src="http://url/application/image?personId=4"/>
<img src="http://url/application/image?personId=5"/>
如何阻止模板第一次显示相同的图像?
编辑:还尝试在响应 src 请求的控制器中的 renderBinary(image) 调用之前添加下面看到的响应标头:
...
response.setHeader("Pragma-directive", "no-cache");
response.setHeader("Cache-directive", "no-cache");
response.setHeader("Cache-control", "no-cache");
response.setHeader("Pragma", "no-cache");
response.setHeader("Expires", "0");
renderBinary(imageFile);
根据this 帖子。它实际上在前几次有效,但在停止并启动 Play 服务器后第三次,我遇到了相同的缓存问题,尽管 personId 不同,但所有图像都显示相同的图像。我还没有任何运气将时间戳附加到网址的末尾。
编辑 #2:我还尝试在 application.conf 中将 http.cacheControl 属性更改为 0:
http.cacheControl=0
但它再次给了我不一致的结果,它是否显示了正确或错误的图像。
【问题讨论】:
标签: java caching playframework