2012-04-09 4 views
0

Google은 사용자가 콘텐츠 (텍스트, 이미지, swfs, mp3 등)를 추가/수정/대체/삭제할 수있는 응용 프로그램을 보유하고 있습니다. 관리자는 no-cache 헤더를 사용하여 항상 최신 업데이트 파일을 갖기를 원하며 사용자가 응용 프로그램을 실행하면 모든 것이 캐시를 가져 오거나 사용합니다.htaccess no-caching 용 mod_headers

나는 솔루션에보고하고 같은 HTML 메타 태그를 사용하여 시도 :

<meta http-equiv="expires" content="0" /> 
<meta http-equiv="cache-control" content="no-cache, no-store" /> 
<meta http-equiv="pragma" content="no-cache" /> 

하지만이 헤더를 작성 후에 발생하고 변경되지 않는 한 그 좋은 해결책이 될 것 같지 않습니다 미디어 (이미지, swfs, mp3 등) 헤더.

나는 헤더를 설정하는 아파치를 사용하고 싶었 및 this site이 코드를 건너 온 :

이것은 우리가 캐시 필요로 할 때 언제 사이에 훌륭한 솔루션, 그러나 유일한 진짜 차이를 보인다
<filesMatch "\.(html|htm|js|css)$"> 
FileETag None 
<ifModule mod_headers.c> 
Header unset ETag 
Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate" 
Header set Pragma "no-cache" 
Header set Expires "Wed, 11 Jan 1984 05:00:00 GMT" 
</ifModule> 
</filesMatch> 

URL (preview.jsp vs run.jsp)이 캐시되어서는 안되기 때문에 대부분의 파일이 동일하기 때문에 파일 유형별로 일치시킬 수 없습니다.

누구나이 유형의 시나리오에 적합한 솔루션을 제공합니까?

감사합니다.

EDIT :

Preview.jsp 및 run.jsp 기본적 만 다른 JSP 및 JS 처리와 동일하다. 그들은 iframe을 통해 동일한 콘텐츠와 미디어를 읽습니다. 예를 들어, 각각 다음과 같이 표시됩니다.

preview.jsp 및 run.jsp는 동일한 디렉토리에 나타나며 모두 동일한 자원을 사용합니다. preview.jsp를 캐시하지 않고 run.jsp를 캐시하는 솔루션을 찾고 있습니다.

서버는 Apache Tomcat으로 설정됩니다.

답변

1

트릭 할 수 SetEnvIfHeader의 조합 : 응답에 대한

# Image, CSS and JavaScript requests normally contain the Referer header 
# which tells apache which page is requesting the resource 
# Use SetEnvIf directive to set a flag for internal uses 

SetEnvIf Referer preview\.jsp force_no_cache 

# Header directive optionally accepts env= argument 
# If present, the directive is fired if the flag is set 

Header unset ETag env=force_no_cache 

# repeat for other headers 
+0

감사합니다. 작동하는 것처럼 보입니다. 나는 내일 그것을 시도 할 것이다. – fanfavorite

1

Java 서블릿에 해당 헤더를 설정할 수 있습니다. Apache mod_headers는 주로 Apache에서 관리하는 정적 리소스에서 작동하도록되어 있습니다. 어플리케이션 서버가 제공하는 모든 것은 AS 측에서 관리됩니다.

일반적으로 이러한 목적으로 필터를 사용할 수 있습니다. 다음은 예입니다 http://www.tidytutorials.com/2009/11/adding-headers-to-requests-in-filters.html

+0

감사합니다. 나는 상당히 새로운 JSP로, 그래서 제발 나와 함께. 이 방법으로 헤더를 설정하면 페이지 내의 모든 미디어에 영향을 줍니까? 그래서 간단한 "response.setHeader"대신이 경로를 사용하게되는 것입니까? – fanfavorite

+0

response.setHeader는 JSP/Servlet에서 제공하는 내용에만 영향을줍니다. 미디어 자원은 다른 캐싱 설정을 가질 수 있습니다. 그래서 기본적으로 정적 인 자원을 위해 아파치를 사용합니다. 자바 애플리케이션은 JSP가 제공하는 컨텐트 (즉, 페이지의 내용이지 미디어가 아닌 내용)에 대해서만 캐싱 헤더를 설정합니다. –

+0

내 주요 문제는 미디어 캐싱 (이미지, mp3의, swf의)하지만 일부 시나리오에서 캐시 된 (제작) 및 캐싱되지 않는 다른 시나리오 (개발)가 필요하기 때문에 어떻게해야합니까? – fanfavorite