내 템플릿에 같은 코드의 비트 :플레이 프레임 워크 및 이미지 캐싱
#{list people, as:'person'}
<img src="@@{Application.image(person.id)}">
#{/list}
플레이 서버를 시작한 후 목록의 첫 번째 이미지를 여러 번 보여줍니다. 예를 들어 인물 변수에 1, 2, 3, 4, 5의 ID가 포함 된 경우 5 개의 이미지가 표시되지만 모두 동일한 이미지, 즉 1의 ID에 해당하는 이미지의 변수가 표시됩니다.
새로 고침을 누르면 이미지가 ID에 따라 고유하게 변경됩니다.
<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"/>
가 어떻게 같은 이미지 처음 라운드를 보여주는에서 템플릿을 중지 할 수 있습니다 템플릿에서 렌더링 된 HTML은 다음과 같습니다?
편집 :
...
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 당 :은 또한 SRC 요청에 응답 내 컨트롤러에서 renderBinary (이미지) 호출하기 전에 아래에 보이는 응답 헤더를 추가했습니다. 실제로 처음 몇 시간 동안 작동했지만 Play 서버를 중지하고 시작한 후 세 번째로는 다른 인물에도 불구하고 모든 이미지가 동일한 이미지를 보여주는 동일한 캐싱 문제가있었습니다. 나는 또한 행운을 남기지 않고 url 끝에 timestamp를 추가했다.
편집 # 2 : 나는 또한 application.conf에서 0으로 http.cacheControl 속성을 변경 시도 :
http.cacheControl=0
을하지만 그것이 옳고 그름을 보였다 여부는 다시에 관해서는 나에게 일관성없는 결과를 준 이미지. 내가 생각할 수있는
나는 그 일을 생각했지만 personIds가 적어도 처음으로 유일 할 것이라고 생각했는데 왜 타임 스탬프를 추가하면 달라질까요? (나는 그것을 시도하고 문제가 사라진 것 같지만, 사람 ID가 왜 똑같은 영향을 미치지 않았는지, 적어도 처음에는 혼란 스럽다) – digiarnie
수정, 나는 이미지가 반복되는 또 다른 인스턴스를 가졌다. 타임 스탬프가 있음에도 불구하고. – digiarnie
나는 또한 이것을 시도했다 : response.setHeader ("Cache-Control", "no-cache"); renderBinary (이미지)를 호출하기 전에 내 컨트롤러에서; 그리고 그것은 그 문제를 해결하지 못하는 것 같습니다. – digiarnie