문제

좋은 날,

나는 사용 중입니다 캐시 필터 내 서버의 특정 경로를 필터링하려면 (이미지 스트림을 응답 스트림에 출력). 다음과 같이 web.xml에서 구성했습니다.

<filter>
    <filter-name>imagesCache</filter-name>
    <filter-class>com.samaxes.cachefilter.presentation.CacheFilter</filter-class>
    <init-param>
        <param-name>privacy</param-name>
        <param-value>public</param-value>
    </init-param>
    <init-param>
        <param-name>expirationTime</param-name>
        <param-value>2592000</param-value>
    </init-param>
</filter>

...
<filter-mapping>
    <filter-name>imagesCache</filter-name>
    <url-pattern>/my/path/*</url-pattern>
</filter-mapping>

내 Firefox를 사용하면 주소 표시 줄을 통해 URL에 액세스하면 서버에 처음 도착하지만 호출 후에 캐시를 사용합니다. 그러나 URL이 내 페이지 안에 있으면 <img src="..."/> ), 항상 서버에 도달하는 것 같습니다.

편집] 몇 번 더 테스트 한 후 주소 표시 줄을 통해 내 이미지에 액세스하는 것이 항상 작동하지 않습니다. 그러나 캐싱은 그것보다 더 자주 작동하는 것 같습니다. 그것이 정말로 확실하지 않습니다.

추가 정보 : 내 경로는 /my /path? 확장 (예 : GIF, PNG, JPEG)이 없지만 MimeType이 올바르게 설정되어 있습니다 (Image/GIF, Image/PNG, Image/JPEG). 확장 부족이나 쿼리 문자열의 존재가 영향을 미치는지 확실하지 않습니다. (또 다른 참고 사항. 내 URL에는 쿼리 문자열이 있지만 테스트와 함께 동일한 URI + 쿼리 문자열을 반복해서 사용하고 있습니다).

왜 아이디어가 있습니까?

감사

도움이 되었습니까?

해결책

특히 요청에 따라 캐시 제어 헤더를 찾으려고합니다. 요청에 Cache-Control : No-Cache 또는 Cache-Control : Max-Age = 0과 같은 내용이 표시되면 캐시는 캐시 된 사본을 제공 할 수 없습니다. 또는 응답에 시간이 너무 가까운 헤더가 만료되면 오랫동안 캐시 할 수 없습니다.

헤더 및 설명의 전체 목록은 HTTP 1.1 사양에 있습니다. 보다 HTTP의 캐싱 (13) 그리고 헤더 필드 정의 (14)

그만큼 파이어 버그 플러그인 Firefox를 사용하여 요청 및 응답 헤더를 확인하는 좋은 방법 중 하나입니다.

Firefox를 어떻게 사용하는지 확인하십시오. 새로 고침 버튼을 누르는 것은 캐시 제어 : 없음 캐시와 동일합니다. 가장 신선한 사본을 원한다고 말하면서 원래 웹 서버로 돌아갑니다.

다른 팁

전송되는 HTTP 요청, 특히 해당 이미지 요청을 위해 전송되는 HTTP 헤더를 조사합니다. 당신은 a를 사용할 수 있습니다 Firefox 플러그인, 그리고/또는 서블릿 끝에서 헤더를 점검합니다 ( HttpServletRequest 물체)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top