Apache httpd를 사용하면 주어진 사용자 에이전트에 대한 캐싱을 어떻게 구성하지 않습니까?

StackOverflow https://stackoverflow.com/questions/596520

문제

Apache HTTPD가 대부분의 정적 콘텐츠 요청에 캐시 헤더를 추가하도록 구성되어 있습니다.

ExpiresActive On
ExpiresDefault "access plus 1 year"

# Force JNLP and BSH files to expire immediately so updates are checked for
# and seen (We need this so we see changes in the dynamic content in both)
ExpiresByType application/x-java-jnlp-file "now"
ExpiresByType application/x-bsh "now"

어떤 요청에 대해이 캐싱을 어떻게 비활성화 할 수 있습니까? UserAgent 문자열 JNLP가 포함되어 있습니까? 요청이 사용자 에이전트 JNLP에서 오는 경우 (예 : "User-Agent: JNLP/6.0 javaws/1.6.0_12 (b04) Java/1.6.0_12") 나는 원하지 않는다 어느 Cache-Control 또는 HTTP 응답의 다른 캐시 관련 헤더.

사용자 에이전트를 기반으로 여러 가지에 대한 구성 예제를 찾을 수 있지만 사용자 에이전트에 따라 캐싱을 구성하는 방법을 알 수 없습니다.

도움이 되었습니까?

해결책

당신의 ExpiresByType Directive는 좋은 생각처럼 보입니다 ... 충분하지 않으면 사용해보십시오. BrowserMatch:

BrowserMatch JNLP ua_is_jnlp

이것은 환경 변수를 설정합니다 ua_is_jnlp 사용자 에이전트 헤더가 문자열을 포함하는 요청에 대한 값에 대해 JNLP (사례에 민감한 변형도 있습니다. BrowserMatchNoCase). 그런 다음 캐싱 헤더를 지울 수 있습니다

Header unset Cache-Control env=ua_in_jnlp
Header unset Expires env=ua_in_jnlp

캐싱을 완전히 비활성화하려면 설정이 더 나을 것입니다.

Header set Cache-Control no-cache env=ua_in_jnlp
Header set Expires 0 env=ua_in_jnlp
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top