일반 Pragma와 Cache-Control

황제낙엽 2018.03.28 10:02 조회 수 : 61

sitelink1 https://blog.naver.com/semi7623/100005637477 
sitelink2  
sitelink3  
sitelink4  
extra_vars5  
extra_vars6  

Pragma와 Cache-Control은 브라우저나 프록시 서버로 하여금 요청시에 캐시된 문서를 사용하지 말고 매번 서버로부터 새로운 문서를 다시 전송받아 사용하도록 알리는 헤더이다.

HTTP1.0 에서는 Pragma 헤더에 'no-cache'를, HTTP1.1 에서는 Cache-Control 헤더에 'no-cache'를 각각 지정함으로써 가능하다.

 

브라우저나 프록시 서버가 지원하는 HTTP 프로토콜 버전을 알 수 없는 경우 응답 헤더에 Cache-Control과 Pragma 헤더를 'no-cache'로 함께 지정하여 주거나 HttpServletRequest 인터페이스 객체(내장 객체 request)의 getProtocol() 메소드를 사용하여 요청한 클라이언트의 HTTP 프로토콜 버전을 확인한 후 해당 버전에 맞게 헤더를 지정해줄 수 있다.

 

캐쉬 방지팁

 

<%

    response.setDateHeader("Expires", 0);

    response.setHeader("Pragma", "no-cache");

 

    if(request.getProtocol().equals("HTTP/1.1")) {

        response.setHeader("Cache-Control", "no-cache");

    }

%>

 

 

 

요약

1. Request header에 Pragma와 Cache-Control 을 no-cache로 설정하면 브라우저나 프록시 서버의 캐시를 이용하지 않게 한다

    -> 서버에 request 가 요청되지만 서버에서 클라이언트의 자원이 이전과 동일한지에 대한 검사는 별도로 이뤄진다(etag, If-Match, If-Modified-Since, If-None-Match)

 

2. HTTP1.0 에서는 Pragma 헤더에 'no-cache'를, HTTP1.1 에서는 Cache-Control 헤더에 'no-cache'를 각각 지정한다

 

3. 브라우저나 프록시 서버가 지원하는 HTTP 프로토콜 버전을 알 수 없는 경우 다음과 같은 두가지 방법이 있다

    -> Request에 Cache-Control과 Pragma 헤더를 'no-cache'로 둘다 설정하는 방법

    -> CGI프로그램에서 HttpServletRequest 인터페이스 객체(내장 객체 request)의 getProtocol() 메소드를 사용하여

        요청한 클라이언트의 HTTP 프로토콜 버전을 확인한 후 해당 버전에 맞게 헤더를 지정하는 방법

번호 제목 글쓴이 날짜 조회 수
125 div와 span의 차이점 (from Bing) 황제낙엽 2023.06.16 2
124 flexbox (flexible box layout) 황제낙엽 2023.02.27 0
123 characters from ISO 8859-1 황제낙엽 2020.11.10 28609
122 HTML FRAMESET 태그 예제 황제낙엽 2020.11.06 13
121 스마트 기기에서 여러 단말기의 해상도에 대응하기 위해 사용하는 HTML viewport meta tag 황제낙엽 2020.11.06 41
120 네이버의 무료 나눔 글꼴 황제낙엽 2020.05.06 1110
119 서버의 이미지나 txt 파일을 웹브라우저에서 다운로드하기 황제낙엽 2019.05.13 82
118 When to encode space to plus (+) or %20? (application/x-www-form-urlencoded) 황제낙엽 2019.04.15 99
117 HTTP/2 소개 황제낙엽 2018.10.12 59
116 글자, 문자, 텍스트, 글꼴, 서체, 폰트와 관련한 속성들 / font-size , 크기 단위(em, px, pt, rem), 절대 단위, 상대 단위 황제낙엽 2018.04.18 147
» Pragma와 Cache-Control 황제낙엽 2018.03.28 61
114 로드밸런싱(L4)+아파치를 운영시 etag제거로 캐시 성능 최적화 file 황제낙엽 2018.03.28 226
113 HTTP 요청 헤더 III - If-Match, If-Modified-Since, If-None-Match file 황제낙엽 2018.03.27 87
112 재미난 로그인 페이지 만들기 file 황제낙엽 2018.03.26 202
111 HTTP Cache-Control 요청 지시어 황제낙엽 2018.03.09 67
110 내 웹사이트의 속도를 빠르게! file 황제낙엽 2018.03.07 183
109 성능을 위한 초간단 HTTP 304 Not Modified 구현 방법 file 황제낙엽 2018.03.07 97
108 accept 와 Content-type의 차이는? 황제낙엽 2018.03.07 59
107 [MIME type/content type/media type] text/javascript와 application/javascript의 차이점 황제낙엽 2017.11.23 166
106 User Agent 에 관련된 링크 황제낙엽 2017.11.20 595