nginx 시리즈 (21) nginx 의 ETag 와 Last - Modified
Etag 를 계산 할 때 CPU 소모 가 발생 하기 때문에 시간 스탬프 를 사용 할 수도 있 지만, 이렇게 해서 Last - Modified 를 직접 사용 하면 된다.
Expires 와 Etag 를 동시에 사용 할 때 우선 순위 가 없고 이들 을 만족 시 킬 때 결정 할 수 있 습 니 다.
http 의 Response 첫 부분 에 transfer - coding 도 메 인 값 이 chunked 입 니 다.304 의 원 리 를 사용 할 수 없다.tomcat 에서 사용 하지 않 는 방법 은 되 돌아 오 는 캐 시 를 설정 하 는 것 입 니 다. 이 캐 시 보다 데이터 가 적 으 면 열 리 지 않 습 니 다.
response.setBufferSize(1024 * 1024);
앱 과 요청 한 네 이 티 브 프로 세 스.그림 을 보면 모든 것 을 안다.
[img]http://dl2.iteye.com/upload/attachment/0113/0688/de0ea2ab-ccde-3c08-a499-5aa3862b01c9.png[/img]
proxy 사용 하기cache 모듈 의 nginx 프로 세 스.프 록 시 를 열 고 캐 시 인증 을 다시 합 니 다.
[color = red] proxy 의 cache 구현, 고양이 머리 형의 다른 글 참조
http://phl.iteye.com/blog/2247856[/color]
proxy_cache_revalidate on
프 록 시 캐 시가 만 료 되 지 않 았 다 면 프 록 시 캐 시 는 304 상태 코드 를 되 돌려 주 고 body 가 없습니다.
프 록 시 캐 시가 만 료 되면 백 엔 드 에 서버 인증 을 적용 하고 백 엔 드 서버 가 304 로 돌아 가면 프 록 시 캐 시가 계속 사 용 됩 니 다.
이 프로 세 스에 서 는 이전 네 이 티 브 프로 세 스 의 브 라 우 저의 원리 와 같 습 니 다.
그리고 proxycache 에서 proxy 를 사용 하면cache_min_uses 마지막 캐 시 를 출발 할 때 nginx 서버 는 304 를 응용 서버 에 전달 하지 않 고 최신 데 이 터 를 직접 가 져 와 캐 시 를 하고 응용 서버 는 200 상태 코드 를 되 돌려 줍 니 다.
[img]http://dl2.iteye.com/upload/attachment/0113/0686/09e6baee-8054-3071-acd8-af2172301b56.png[/img]
response.addHeader("Cache-Control", "max-age=5,s-maxage=15");//, no-store, max-age=0,s-maxage=0
// Expires , Expires
response.setDateHeader("Expires", System.currentTimeMillis() + 1000 * 10);
//"If-Modified-Since" , "If-None-Match"
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH");
String e1 = sdf.format(new Date());
response.setHeader("ETag", e1);
//2015-11-13 12:28:00
long d1 = 1447388904765L / 1000 * 1000 + 3600 * 1000; // ,
response.setDateHeader("Last-Modified", d1);
long d = request.getDateHeader("If-Modified-Since"); //
String e = request.getHeader("If-None-Match");
System.out.println(d);
System.out.println(e);
response.setContentType("text/html");
if (e1.equals(e) && d1 == d) {
response.setStatus(304);
} else {
response.getWriter().write("hello world:" + new Timestamp(System.currentTimeMillis()).toString());
}
nginx 의 전체 프로필
location /cache_ehcache-2.10.0_web {
proxy_pass http://192.168.56.1:8080/cache_ehcache-2.10.0_web;
proxy_cache_revalidate on;
proxy_cache content; # keys_zone
proxy_cache_valid 200 304 301 302 1h; #
proxy_cache_methods GET; # get head
proxy_cache_valid any 3s; #
proxy_cache_key $host:$server_port$uri$is_args$args; # key hash, KEY
# key : [host]192.168.56.2 [server_port]8080 [uri]/cache_ehcache-2.10.0_web/expire [is_args] [args]-
proxy_cache_min_uses 3; # url, , 3 , 。
proxy_cache_bypass $cookie_nocache $arg_nocache $arg_comment; # , 0,nginx ,
#
access_log logs/cache.log cache_log;
}
참고 문장
http 의 chunked 원리
http://www.cnblogs.com/zhaozhan/archive/2010/08/24/1807639.html
tomcat 에서 Transfer - Encoding: chunked 를 사용 하지 않 는 방법
http://stackoverflow.com/questions/6299432/how-do-disable-transfer-encoding-in-tomcat-6
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.